- Status Closed
- Percent Complete
- Task Type Patches
- Category User Interface
- Assigned To No-one
- Operating System All players
- Severity Low
- Priority Very Low
- Reported Version
- Due in Version Undecided
-
Due Date
Undecided
- Votes
- Private
FS#6189 - 'Out of menus' error check
Both menu_run and menu_exit don’t check to see if they have been passed a valid menu slot. This causes a freeze/segfault if menu_find_free fails in an ‘Out of menus’ condition and no error checking is done on the result. This simple patch adds checks, though we’d probably want a visual error message displayed somewhere too.
Loading...
Available keyboard shortcuts
- Alt + ⇧ Shift + l Login Dialog / Logout
- Alt + ⇧ Shift + a Add new task
- Alt + ⇧ Shift + m My searches
- Alt + ⇧ Shift + t focus taskid search
Tasklist
- o open selected task
- j move cursor down
- k move cursor up
Task Details
- n Next task
- p Previous task
- Alt + ⇧ Shift + e ↵ Enter Edit this task
- Alt + ⇧ Shift + w watch task
- Alt + ⇧ Shift + y Close Task
Task Editing
- Alt + ⇧ Shift + s save task
Forgot about menu_show… Now prevents
FS#6010from crashing :)no it doesn't
It does some really weird things if you try to reproduce
FS#6010.First hit the limit of 6 iterations, then press left to back out. Watch the screen go crazy.
Pressing left enough times eventually freezes my player.
WFM on iRiver H1x0. You were using 'out_of_menus_error_check2.patch', right? I know the first one didn't fix all the problems from an out of menus condition.
I suppose this patch isn't as necessary now (as long we make sure MAX_MENUS is big enough), since your patch fixed the cause that made the lack of checks a problem (thanks a lot for that, by the way). It doesn't add much to the code size, however…
yes, I tried out_of_menus_error_check2.patch with
FS#6010and it didn't fix that. It didn't crash due to too many recursions but just having one recursion was already enough to cause some internal corruption when going back down the call list (by pressing left)Checking the return value is needed too with an error message, which is why I didn't close this entry yet ;)