tags 567961 patch On Sun, 2010-02-07 at 12:33 +0100, Svante Signell wrote: > On Sun, 2010-02-07 at 12:01 +0100, Svante Signell wrote: > ... > > > Strange, since the 1.4.2-3.4 works and 1.4.2-3.5 don't. > > > > I built the package myself and it crashes too! > > gcc (Debian 4.4.3-2) 4.4.3 > > g++ (Debian 4.4.3-2) 4.4.3 > > > > gdb backtrace when crashing gedit in the attached file. > > As you can see I'm not the only one having this problem, see bugs: > > 567961, 568078, 568129 > > More info: > Setting CXXFLAGS to -g -O make the crashes disappear. Obviously the > compiler optimizes too much at the default level -O2 (or has a bug). > Alternately the code should be rewritten to be more robust. > > Can somebody reduce the optimization level and provide an NMU version > until the underlying reason is found.
I managed to find out where the crash happen with -O2. The problems are in src/ispell/ispell_checker.cpp. The attached patch to the ispell_checker.cpp fixes the problem with the string length. I don't know if the old construct is correct C++ code. In case it is then there is a bug in g++-4.4.3. Since I don't know how to make a debian patch can somebody else do this? I'm also planning to report to upstream.
--- ispell_checker.cpp.orig 2010-02-07 15:35:00.067310730 +0100 +++ ispell_checker.cpp 2010-02-07 15:36:13.239307199 +0100 @@ -438,11 +438,9 @@ if (prefstringchar < 0) { - std::string teststring; for(int n1 = 1; n1 <= 15; n1++) { - teststring = "latin" + n1; - prefstringchar = findfiletype(teststring.c_str(), 1, + char * teststring = g_strdup_printf("latin%u", n1); prefstringchar = findfiletype(teststring, 1, deftflag < 0 ? &deftflag : static_cast<int *>(NULL)); if (prefstringchar >= 0)