[hackers] [dmenu][PATCH] avoid redraw when there's no change

From: NRK <nrk_AT_disroot.org>
Date: Fri, 25 Mar 2022 23:27:25 +0600

while i was timing the performance issue, i noticed that there was lots
of random redrawing going on.

turns out there were coming from here; if someone presses CTRL/ALT etc
without pressing anything else, nothing will be inserted, so nothing
will change. but the code will `break`, go down and do a needless redraw.

this patch changes it to simply return if the keypress iscntrl()

also avoid potential UB by casting *buf into an unsigned char.
---
 dmenu.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/dmenu.c b/dmenu.c
index eca67ac..560c4c9 100644
--- a/dmenu.c
+++ b/dmenu.c
_AT_@ -405,8 +405,9 @@ keypress(XKeyEvent *ev)
 	switch(ksym) {
 	default:
 insert:
-		if (!iscntrl(*buf))
-			insert(buf, len);
+		if (iscntrl((unsigned char)*buf))
+			return;
+		insert(buf, len);
 		break;
 	case XK_Delete:
 	case XK_KP_Delete:
-- 
2.34.1
Received on Fri Mar 25 2022 - 18:27:25 CET

This archive was generated by hypermail 2.3.0 : Fri Mar 25 2022 - 19:00:36 CET