Hi Mike, that's my mess.
> In the UT_contextGlyph constructor there's a call > > memcpy(&s_table[HEBREW_START], &s_table[HEBREW_END + 1] ... > > As all (should) know, overlapping memcpy is undefined. If the areas > overlap one should use memmove, but since there are quite a few > platforms involved I didn't want to break anything by fixing this. The gap between the overlap is 120 bytes -- I did not think there was a processor around that would move data around in such big chunks as to have a problem with this. > Another thing is UT_contextGlyph::renderString. 28 lines into this > function there's > > for(; j < CONTEXT_BUFF_SIZE; j++) > next_tmp[j] = *(next + (j + i + 1 - len)); > > I really don't know what this code does, and I'm not sure I want to > know. What I do know is that the expression (next + (j + i + 1 - len)) > evaluated to an address that is not initialized (called from > fp_TextRun::_refreshDrawBuffer). Someone knowing this code might want > to have a look at that too. Just having a quick look at the code, it seems to me that the indexing is correct; perphaps the problem is in fp_TextRun::_refreshDrawBuffer(). Unfortunately, I am to busy at the moment to be able to look into this. Tomas
