Re: Aspell core dump

"Gary Setter" <[email protected]>
Newsgroups gmane.comp.gnu.aspell.devel
Message-ID <000701c4e311$49b27d80$a8144a0c@pavilion>
<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.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.