I have already sent Christophe a patch for this. The problem was he set
p,
moved p, realloced dst, and expected dst to start at the same memory
locating it was at before reallocing, which may or may not be true. The
fix
moves the p assignment and movement after the realloc call.
Andy
I looked at the patch, but it is not sufficient.
In the case realloc returns a new pointer the merge_words works well but the
original parameter mmp->somethingh will not be changed, so it will point to
unreferenced memory!
So, in order to change it, we have to work on its pointer modifying the
function prototype and the relative calls, according to the following patch:
76c76
< merge_words (char * dst, char * word, int space)
---
merge_words (char ** dst, char * word, int space)
81,82c81,82
< len = strlen(dst) + strlen(word) + space;
< dst = realloc(dst, len + 1);
---
len = strlen(*dst) + strlen(word) + space;
*dst = realloc(*dst, len + 1);
84c84
< if (!dst)
---
if (!*dst)
87c87
< p = dst;
---
p = *dst;
127c127
< merge_words(mpp->features, word, 1);
---
merge_words(&mpp->features, word, 1);
170c170
< merge_words(mpp->selector, word, 1);
---
merge_words(&mpp->selector, word, 1);
I'm sorry i realized it only after Chris released version 0.4.0 :(
I'm going to continue in testing overall the package and giving you
feedback.
Good work
Nicola Ranaldo