<snip> > Hi, > I tried to look into this. The win32 port does not dump core, but > it does reprompt for when webserver is replaced by web-server or > web server. I have had it stuck in an infinite loop, but I'm > having difficulty recreating the problem. > > At the center of the infinite loop problem is this function in > writeable. > > static void soundslike_next(WordEntry * w) > { > const Str * i = (const Str *)(w->intr[0]); > const Str * end = (const Str *)(w->intr[1]); > set_word(*w, *i); > ++i; > if (i == end) w->adv_ = 0; > } > Nothing is changing w->intr[0] or w-inter[1] so w->adv is never > set to zero and the loop never terminates. > > Also the WordEntry::intr array of void pointers is a bad idea in > my opinion. Is there any support for eliminating them?
I'm still studying writable.cpp. I'm finding what are in my opinion bad ideas. This is the first: static inline StrVector * get_vector(Str s) { return (StrVector *)(s - sizeof(StrVector) - 2); } It seems a Vector<Str> object is allocated, but only the address of first string is saved. Then, when we want to use the Vector, we just subtract and cast. I think the WritableReplDict::add_repl() and WritableDict::add() functions are along the same lines. Does anyone else have problems with these functions as they are? I would like to straighten this out as part of fixing the infinite loop problem. Also, I had a problem saving replacement pairs that included hyphenated words. I fixed it in PosibErr<void> SpellerImpl::store_replacement(). The fix was to retrieve the separator characters from config and use them, (not just space) to break up the replacement string into its parts. I wasn't going to submit a patch until I fixed the infinite loop bug, but I would be interested in what the list things before I submit a patch. _______________________________________________ Aspell-devel mailing list [EMAIL PROTECTED] http://lists.gnu.org/mailman/listinfo/aspell-devel