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. Anyone that knows if all current platforms support memmove perhaps could have a look at 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. /Mike