wxMaxima-developers / wxmaxima

A gui for the computer algebra system Maxima built with wxWidgets
https://wxMaxima-developers.github.io/wxmaxima/
Other
459 stars 96 forks source link

alt up arrow crashes WxMaxima on MSWindows 10 #1886

Closed jihemd closed 2 months ago

jihemd commented 5 months ago

Hi

I am unable to get the immediately previous command with alt-up-arrow.

If you start wxMaxima, then type in a single command, say '2+2', then validate, you get 4 next press alt-up arrow you get an error message

window 'wxWidgetsDebug Alert''

'a debugging check in this application has failed' '/home/dauti/Software/Crosscompiled-Windows-installer/build/wxwidgets/wxwidgets-prefi...' 'assert""IsValid(n)"" failed in GetString(): invalid index in wxListBox::GetString.

(%i2) build_info(); (%o2) build_info(version="5.47.0", timestamp="2023-06-02 20:31:42", host="x86_64-w64-mingw32", lisp_name="SBCL", lisp_version="2.3.2", maxima_userdir="C:/Users/jihemd/maxima", maxima_tempdir="C:/Users/jihemd/AppData/Local/Temp", maxima_objdir="C:/Users/jihemd/maxima/binary/5_47/sbcl/2_3_2", maxima_frontend="wxMaxima", maxima_frontend_version="23.12.0_MSW")

nevertheless Thx for Maxima/wxmaxima, I love it! regards Jean-Marc D.

daute commented 5 months ago

Thanks for the bug report, you are right.

Here a backtrace (for the wxMaxima release 23.12.0, not the current development version):

(gdb) bt
#0  0x0000000000a679a4 in wxListBox::GetString(unsigned int) const ()
#1  0x00000000004df963 in History::GetCommand (this=0xa0d6b20, next=false)
    at /home/dauti/Software/Crosscompiled-Windows-installer/build/wxmaxima/wxmaxima-prefix/src/wxmaxima/src/History.cpp:251
#2  0x00000000005ccea8 in wxMaxima::EditMenu (this=0x9487520, event=...)
    at /home/dauti/Software/Crosscompiled-Windows-installer/build/wxmaxima/wxmaxima-prefix/src/wxmaxima/src/wxMaxima.cpp:6461
#3  0x0000000000d3e9a8 in wxAppConsoleBase::CallEventHandler(wxEvtHandler*, wxEventFunctor&, wxEvent&) const ()
#4  0x0000000000ea5201 in wxEvtHandler::ProcessEventIfMatchesId(wxEventTableEntryBase const&, wxEvtHandler*, wxEvent&)
    ()
#5  0x0000000000ea56b7 in wxEvtHandler::SearchDynamicEventTable(wxEvent&) ()
#6  0x0000000000ea5a25 in wxEvtHandler::TryHereOnly(wxEvent&) ()
#7  0x0000000000ea54c3 in wxEvtHandler::DoTryChain(wxEvent&) ()
#8  0x0000000000ea5be2 in wxEvtHandler::ProcessEvent(wxEvent&) ()
#9  0x0000000000c07110 in wxWindowBase::TryAfter(wxEvent&) ()
#10 0x0000000000ea72cc in wxEvtHandler::SafelyProcessEvent(wxEvent&) ()
#11 0x0000000000ba0be0 in wxMenuBase::DoProcessEvent(wxMenuBase*, wxEvent&, wxWindow*) ()
...

Should History::GetCommand() return wxEmptyString, if no commands are available?

daute commented 2 months ago

Closing this issue. No feedback from the original creator of the issue for some month and it works for me now, I am sure I solved the issue.