commit 6818e07291f3b2913e687c8ec3d3fe4711724050 Author: NRK <n...@disroot.org> AuthorDate: Fri Mar 25 22:51:45 2022 +0100 Commit: Hiltjo Posthuma <hil...@codemadness.org> CommitDate: Fri Mar 25 22:53:50 2022 +0100
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. diff --git a/dmenu.c b/dmenu.c index 085dc29..19f6385 100644 --- a/dmenu.c +++ b/dmenu.c @@ -415,8 +415,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: