[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#872002: some more context



The control flow diverges somewhere after FlushUpdate...
it seems to be this if.. in Text.c

3320    #ifndef OLDXAW
3321            if (XawTextSinkBeginPaint(ctx->text.sink) == False)
3322    #endif
3323                display_text = OldDisplayText;

the condition differs because of:
XawTextSinkBeginPaint

in the working code,
cclass->text_sink_class.extension->PreparePaint
and DoPaint are NULL
and
display_text = OldDisplayText;

the broken code has:
(gdb) p cclass->text_sink_class.extension->BeginPaint
$3 = (int (*)(Widget)) 0xb7dabe40 <BeginPaint>
(gdb) p cclass->text_sink_class.extension->PreparePaint
$4 = (void (*)(Widget, int, int, XawTextPosition, XawTextPosition,.
    int)) 0xb7d86770 <AsciiPreparePaint>
(gdb) p cclass->text_sink_class.extension->DoPaint
$5 = (void (*)(Widget)) 0xb7d84b90 <AsciiDoPaint>
(gdb) p cclass->text_sink_class.extension->EndPaint
$6 = (int (*)(Widget)) 0xb7dab920 <EndPaint>

those get set in
XawAsciiSinkClassPartInitialize in AsciiSink.c

.extension gets set in:
XawTextSinkClassPartInitialize in TextSink.c

It's the TextSinkExtensionRec is /defined static/ in TextSink.c
Therefore initializing a single non-intl textbox (by XawAsciiSinkClassPartInitialize) breaks all the intl boxes.


Reply to: