git: 9front

Download patch

ref: 9094c66c4a2f57cf0c4719af05afb2ad1a9d8eda
parent: 299773279c268a80599dfb38c96def4c23a3ca15
author: cinap_lenrek <cinap_lenrek@gmx.de>
date: Wed Sep 26 11:48:57 EDT 2012

libdraw: fix ^W corner case tick == 0 for enter()/eenter()

--- a/sys/src/libdraw/eenter.c
+++ b/sys/src/libdraw/eenter.c
@@ -152,10 +152,12 @@
 			}
 			if(k == Ketb){
 				while(tick > 0){
-					buf[--tick] = 0;
+					tick--;
 					if(tick == 0 || strchr("\t ", buf[tick-1]))
 						break;
 				}
+				if(n > tick)
+					memset(buf+tick, 0, n-tick);
 				n = tick;
 				break;
 			}
--- a/sys/src/libdraw/enter.c
+++ b/sys/src/libdraw/enter.c
@@ -160,10 +160,12 @@
 			}
 			if(k == Ketb){
 				while(tick > 0){
-					buf[--tick] = 0;
+					tick--;
 					if(tick == 0 || strchr("\t ", buf[tick-1]))
 						break;
 				}
+				if(n > tick)
+					memset(buf+tick, 0, n-tick);
 				n = tick;
 				break;
 			}
--