notaz.gp2x.de
/
libpicofe.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
740c6f2
)
fix crash if file list is empty in romsel
author
kub
<derkub@gmail.com>
Wed, 15 Nov 2023 20:26:05 +0000
(20:26 +0000)
committer
notaz
<notasas@gmail.com>
Sun, 10 Dec 2023 21:23:07 +0000
(23:23 +0200)
menu.c
patch
|
blob
|
blame
|
history
diff --git
a/menu.c
b/menu.c
index
96b1ea2
..
ae61038
100644
(file)
--- a/
menu.c
+++ b/
menu.c
@@
-1038,16
+1038,17
@@
rescan:
filter = scandir_filter;
\r
\r
n = scandir(curr_path, &namelist, filter, (void *)scandir_cmp);
\r
filter = scandir_filter;
\r
\r
n = scandir(curr_path, &namelist, filter, (void *)scandir_cmp);
\r
- if (n < 0) {
\r
+ if (n < 0
|| !namelist
) {
\r
lprintf("menu_loop_romsel failed, dir: %s\n", curr_path);
\r
\r
// try data root
\r
plat_get_data_dir(curr_path, len);
\r
n = scandir(curr_path, &namelist, filter, (void *)scandir_cmp);
\r
lprintf("menu_loop_romsel failed, dir: %s\n", curr_path);
\r
\r
// try data root
\r
plat_get_data_dir(curr_path, len);
\r
n = scandir(curr_path, &namelist, filter, (void *)scandir_cmp);
\r
- if (n < 0) {
\r
+ if (n < 0
|| !namelist
) {
\r
// oops, we failed
\r
lprintf("menu_loop_romsel failed, dir: %s\n", curr_path);
\r
// oops, we failed
\r
lprintf("menu_loop_romsel failed, dir: %s\n", curr_path);
\r
- return NULL;
\r
+ namelist = malloc(sizeof(*namelist));
\r
+ namelist[0] = calloc(1, sizeof(**namelist));
\r
}
\r
}
\r
\r
}
\r
}
\r
\r
@@
-1108,12
+1109,13
@@
rescan:
namelist[sel]->d_name);
\r
goto rescan;
\r
}
\r
namelist[sel]->d_name);
\r
goto rescan;
\r
}
\r
- if (inp & PBTN_UP ) { sel--; if (sel < 0) sel = n-1; }
\r
+ int last = n ? n-1 : 0;
\r
+ if (inp & PBTN_UP ) { sel--; if (sel < 0) sel = last; }
\r
else if (inp & PBTN_DOWN) { sel++; if (sel > n-1) sel = 0; }
\r
else if (inp & PBTN_LEFT) { sel-=10; if (sel < 0) sel = 0; }
\r
else if (inp & PBTN_DOWN) { sel++; if (sel > n-1) sel = 0; }
\r
else if (inp & PBTN_LEFT) { sel-=10; if (sel < 0) sel = 0; }
\r
- else if (inp & PBTN_RIGHT) { sel+=10; if (sel > n-1) sel =
n-1
; }
\r
+ else if (inp & PBTN_RIGHT) { sel+=10; if (sel > n-1) sel =
last
; }
\r
else if (inp & PBTN_L) { sel-=24; if (sel < 0) sel = 0; }
\r
else if (inp & PBTN_L) { sel-=24; if (sel < 0) sel = 0; }
\r
- else if (inp & PBTN_R) { sel+=24; if (sel > n-1) sel =
n-1
; }
\r
+ else if (inp & PBTN_R) { sel+=24; if (sel > n-1) sel =
last
; }
\r
\r
else if ((inp & PBTN_MOK) || (inp & (PBTN_MENU|PBTN_MA2)) == (PBTN_MENU|PBTN_MA2))
\r
{
\r
\r
else if ((inp & PBTN_MOK) || (inp & (PBTN_MENU|PBTN_MA2)) == (PBTN_MENU|PBTN_MA2))
\r
{
\r