sites

public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log | Files | Refs

commit a7a434ff80cfeb4442afa9ea0d93b528acb4cb12
parent c05fb6ab94abc487d04cda83b533fa23fab3930b
Author: bit9tream <bit6tream@cock.li>
Date:   Fri, 12 Jun 2020 11:46:52 +0300

fix: segfault when there is something in selid and no item is selected

Diffstat:
Mtools.suckless.org/dmenu/patches/multi-selection/dmenu-multi-selection-4.9.diff | 14++++++--------
1 file changed, 6 insertions(+), 8 deletions(-)

diff --git a/tools.suckless.org/dmenu/patches/multi-selection/dmenu-multi-selection-4.9.diff b/tools.suckless.org/dmenu/patches/multi-selection/dmenu-multi-selection-4.9.diff @@ -1,5 +1,5 @@ diff --git a/dmenu.c b/dmenu.c -index 6b8f51b..b621ce3 100644 +index 6b8f51b..6544112 100644 --- a/dmenu.c +++ b/dmenu.c @@ -31,7 +31,8 @@ enum { SchemeNorm, SchemeSel, SchemeOut, SchemeLast }; /* color schemes */ @@ -55,16 +55,14 @@ index 6b8f51b..b621ce3 100644 drw_setscheme(drw, scheme[SchemeOut]); else drw_setscheme(drw, scheme[SchemeNorm]); -@@ -367,6 +381,22 @@ keypress(XKeyEvent *ev) +@@ -367,6 +381,20 @@ keypress(XKeyEvent *ev) goto draw; case XK_Return: case XK_KP_Enter: -+ if (!sel) return; -+ if (issel(sel->id)) { ++ if (sel && issel(sel->id)) { + for (int i = 0;i < selidsize;i++) + if (selid[i] == sel->id) + selid[i] = -1; -+ return; + } else { + for (int i = 0;i < selidsize;i++) + if (selid[i] == -1) { @@ -78,14 +76,14 @@ index 6b8f51b..b621ce3 100644 break; case XK_bracketleft: cleanup(); -@@ -464,13 +494,17 @@ insert: +@@ -464,13 +492,17 @@ insert: break; case XK_Return: case XK_KP_Enter: - puts((sel && !(ev->state & ShiftMask)) ? sel->text : text); if (!(ev->state & ControlMask)) { + for (int i = 0;i < selidsize;i++) -+ if (selid[i] != -1 && sel->id != selid[i]) ++ if (selid[i] != -1 && (!sel || sel->id != selid[i])) + puts(items[selid[i]].text); + if (sel && !(ev->state & ShiftMask)) + puts(sel->text); @@ -99,7 +97,7 @@ index 6b8f51b..b621ce3 100644 break; case XK_Right: if (text[cursor] != '\0') { -@@ -534,7 +568,7 @@ readstdin(void) +@@ -534,7 +566,7 @@ readstdin(void) *p = '\0'; if (!(items[i].text = strdup(buf))) die("cannot strdup %u bytes:", strlen(buf) + 1);