summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNRK <nrk@disroot.org>2022-03-25 22:51:45 +0100
committerrafa_99 <raroma09@gmail.com>2022-03-25 23:13:31 +0000
commit8877bc60f7e6cab133cbf780c3dcae69648a195c (patch)
tree3d4d443f130f1d026989a018860b4e9f5bc823ab
parent8182d53e2b5d361bb58b2db0b96f3ef6dd1fbae9 (diff)
avoid redraw when there's no change
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.
-rw-r--r--dmenu.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/dmenu.c b/dmenu.c
index 1beca73..92110ea 100644
--- a/dmenu.c
+++ b/dmenu.c
@@ -421,8 +421,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: