Dov Feldstern wrote:
As always, Stefan, you are right :) .

I applied your patch (what threw me off was what you said about including another patch --- which BTW, I would still commit separately). Then it didn't compile --- there's a semicolon missing on line 347 of the patch file, or at line 279(?) of bufferview_funcs.cpp.

But now it works, and like a charm: the selection patch you sent yesterday works correctly in the case described below now. And also in the case of the problem I reported yesterday in bugzilla of bug 3550. So you're definitely doing something right ;) .

So all of these patches:

*) http://permalink.gmane.org/gmane.editors.lyx.devel/85956 (fix for bug 3754: cursor movement at RTL-LTR boundary) *) http://permalink.gmane.org/gmane.editors.lyx.devel/86192 (this fix, for issue (3) in bug 3551 --- except note that this also includes the above patch, they should be separated, as that one is independent of this one) *) http://permalink.gmane.org/gmane.editors.lyx.devel/86105 (fix for bug 3550: selection in bidi)

are OK with me, and should be applied (in the above order).

I'm getting a crash now... :( I still don't know which of the above (if any) is the culprit, I'm trying one-by-one to take them off my patch stack, but the compile-test cycle is taking a while.

Anyhow, to reproduce:
1) type a long long string with no space, until it breaks to the next line.
2) from the last position in the paragraph (it only works from there) start backspacing. When you try to delete the last remaining character on the line -- kaboom!

Attached is the trace; looks familiar...


Thanks for all your work on this, Stefan!

Dov


#0  0xb70c9867 in raise () from /lib/libc.so.6
#1  0xb70cb0d8 in abort () from /lib/libc.so.6
#2  0xb724e899 in __gnu_debug::_Error_formatter::_M_error ()
   from /usr/lib/libstdc++.so.6
#3  0x0837c4e8 in lyx::Paragraph::isLineSeparator (this=0x8f1fcb0, pos=8)
    at 
/usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../include/c++/4.1.2/debug/vector:199
#4  0x080867e0 in lyx::Bidi::computeTables (this=0x8f3666c, [EMAIL PROTECTED], 
    [EMAIL PROTECTED], [EMAIL PROTECTED]) at Bidi.cpp:98
#5  0x083faede in lyx::Text::setCurrentFont (this=0x8f36610, [EMAIL PROTECTED])
    at Text2.cpp:773
#6  0x083e938b in lyx::Text::backspace (this=0x8f36610, [EMAIL PROTECTED])
    at Text.cpp:1334
#7  0x08406b8b in lyx::Text::dispatch (this=0x8f36610, [EMAIL PROTECTED], 
    [EMAIL PROTECTED]) at Text3.cpp:635
#8  0x0863ff7f in lyx::InsetText::doDispatch (this=0x8f365cc, [EMAIL 
PROTECTED], 
    [EMAIL PROTECTED]) at InsetText.cpp:263
#9  0x0852e988 in lyx::Inset::dispatch (this=0x8f365cc, [EMAIL PROTECTED], 
    [EMAIL PROTECTED]) at Inset.cpp:145
#10 0x081b4111 in lyx::Cursor::dispatch (this=0x8dcbcc0, [EMAIL PROTECTED])
    at Cursor.cpp:322
#11 0x0830c59f in lyx::LyXFunc::dispatch (this=0x8cf2550, [EMAIL PROTECTED])
    at LyXFunc.cpp:1772
#12 0x0830e5b9 in lyx::LyXFunc::processKeySym (this=0x8cf2550, 
    [EMAIL PROTECTED], state=lyx::key_modifier::none) at LyXFunc.cpp:377
#13 0x086985dd in lyx::frontend::WorkArea::processKeySym (this=0x8d7377c, 
    [EMAIL PROTECTED], state=lyx::key_modifier::none) at WorkArea.cpp:177
#14 0x0870787b in lyx::frontend::GuiWorkArea::keyPressEvent (this=0x8d73768, 
    e=0xbf811514) at GuiWorkArea.cpp:427
#15 0xb7954e11 in QWidget::event () from /usr/lib/libQtGui.so.4
#16 0xb7bd5c84 in QFrame::event () from /usr/lib/libQtGui.so.4
#17 0xb7c4a8af in QAbstractScrollArea::event () from /usr/lib/libQtGui.so.4
#18 0xb790b59f in QApplicationPrivate::notify_helper ()
   from /usr/lib/libQtGui.so.4
#19 0xb790e318 in QApplication::notify () from /usr/lib/libQtGui.so.4
#20 0x086ee410 in lyx::frontend::GuiApplication::notify (this=0x8cf5f08, 
    receiver=0x8d73768, event=0xbf811514) at GuiApplication.cpp:237
#21 0xb795af3e in QApplication::topLevelAt () from /usr/lib/libQtGui.so.4
#22 0xb7985fe6 in QX11Info::copyX11Data () from /usr/lib/libQtGui.so.4
#23 0xb7987dd1 in QX11Info::copyX11Data () from /usr/lib/libQtGui.so.4
#24 0xb7965428 in QApplication::x11ProcessEvent () from /usr/lib/libQtGui.so.4
#25 0xb79891f8 in QX11Info::copyX11Data () from /usr/lib/libQtGui.so.4
#26 0xb74e5b51 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#27 0xb74e8bc6 in g_main_context_check () from /usr/lib/libglib-2.0.so.0
#28 0xb74e9147 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#29 0xb7679648 in QEventDispatcherGlib::processEvents ()
   from /usr/lib/libQtCore.so.4
#30 0xb7988fe5 in QX11Info::copyX11Data () from /usr/lib/libQtGui.so.4
#31 0xb7655231 in QEventLoop::processEvents () from /usr/lib/libQtCore.so.4
#32 0xb765533a in QEventLoop::exec () from /usr/lib/libQtCore.so.4
#33 0xb76576f6 in QCoreApplication::exec () from /usr/lib/libQtCore.so.4
#34 0xb790b017 in QApplication::exec () from /usr/lib/libQtGui.so.4
#35 0x086ed5f8 in lyx::frontend::GuiApplication::exec (this=0x8cf5f08)
    at GuiApplication.cpp:158
#36 0x082e4083 in lyx::LyX::exec (this=0xbf8126bc, [EMAIL PROTECTED], 
    argv=0xbf812774) at LyX.cpp:463
#37 0x0806a24e in main (argc=1, argv=Cannot access memory at address 0x4e01
) at main.cpp:48

Reply via email to