Commit Diff


commit - caf524626894bdee3756c4065bca44152d0efe9a
commit + 605e9b6c035979935f658c52938df56e2d0387ef
blob - 384def6167bbcad650a25b424637faeb939ce38b
blob + 8384bc248d69c4d843291b004e0dba43175a421e
--- dmenu.c
+++ dmenu.c
@@ -82,11 +82,12 @@ calcoffsets(void) {
 	else
 		n = mw - (promptw + inputw + textw(dc, "<") + textw(dc, ">"));
 
-	for(i = 0, next = curr; i <= n && next; next = next->right)
-		i += (lines > 0) ? LINEH : MIN(textw(dc, next->text), mw/3);
-
-	for(i = 0, prev = curr; i <= n && prev && prev->left; prev = prev->left)
-		i += (lines > 0) ? LINEH : MIN(textw(dc, prev->left->text), mw/3);
+	for(i = 0, next = curr; next; next = next->right)
+		if((i += (lines > 0) ? LINEH : MIN(textw(dc, next->text), mw/3)) > n)
+			break;
+	for(i = 0, prev = curr; prev && prev->left; prev = prev->left)
+		if((i += (lines > 0) ? LINEH : MIN(textw(dc, prev->left->text), mw/3)) > n)
+			break;
 }
 
 char *