commit c05fb6ab94abc487d04cda83b533fa23fab3930b
parent f44010b2dc1ab3505fc0fb061f01f401c0e758ac
Author: bit9tream <bit6tream@cock.li>
Date: Fri, 12 Jun 2020 11:26:05 +0300
fix: segfault on <Ctrl-Enter> press when there is no sel
Diffstat:
1 file changed, 7 insertions(+), 5 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..af2fc99 100644
+index 6b8f51b..b621ce3 100644
--- a/dmenu.c
+++ b/dmenu.c
@@ -31,7 +31,8 @@ enum { SchemeNorm, SchemeSel, SchemeOut, SchemeLast }; /* color schemes */
@@ -55,14 +55,16 @@ index 6b8f51b..af2fc99 100644
drw_setscheme(drw, scheme[SchemeOut]);
else
drw_setscheme(drw, scheme[SchemeNorm]);
-@@ -367,6 +381,20 @@ keypress(XKeyEvent *ev)
+@@ -367,6 +381,22 @@ keypress(XKeyEvent *ev)
goto draw;
case XK_Return:
case XK_KP_Enter:
++ if (!sel) return;
+ if (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) {
@@ -76,14 +78,14 @@ index 6b8f51b..af2fc99 100644
break;
case XK_bracketleft:
cleanup();
-@@ -464,13 +492,17 @@ insert:
+@@ -464,13 +494,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)
++ if (selid[i] != -1 && sel->id != selid[i])
+ puts(items[selid[i]].text);
+ if (sel && !(ev->state & ShiftMask))
+ puts(sel->text);
@@ -97,7 +99,7 @@ index 6b8f51b..af2fc99 100644
break;
case XK_Right:
if (text[cursor] != '\0') {
-@@ -534,7 +566,7 @@ readstdin(void)
+@@ -534,7 +568,7 @@ readstdin(void)
*p = '\0';
if (!(items[i].text = strdup(buf)))
die("cannot strdup %u bytes:", strlen(buf) + 1);