diff options
author | cinap_lenrek <cinap_lenrek@gmx.de> | 2012-09-26 15:48:57 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@gmx.de> | 2012-09-26 15:48:57 +0200 |
commit | aa3dd7fd8f1b9409979af8263f06e45505326fc1 (patch) | |
tree | dda3cc61296caf891aedc122318f196b18497a20 /sys/src | |
parent | a77f6553d88b5cda91e5d0054a64b9f1f9d8e304 (diff) |
libdraw: fix ^W corner case tick == 0 for enter()/eenter()
Diffstat (limited to 'sys/src')
-rw-r--r-- | sys/src/libdraw/eenter.c | 4 | ||||
-rw-r--r-- | sys/src/libdraw/enter.c | 4 |
2 files changed, 6 insertions, 2 deletions
diff --git a/sys/src/libdraw/eenter.c b/sys/src/libdraw/eenter.c index a3c60a881..9102d60c3 100644 --- a/sys/src/libdraw/eenter.c +++ b/sys/src/libdraw/eenter.c @@ -152,10 +152,12 @@ eenter(char *ask, char *buf, int len, Mouse *m) } 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; } diff --git a/sys/src/libdraw/enter.c b/sys/src/libdraw/enter.c index a1a66cf6c..18fd4feec 100644 --- a/sys/src/libdraw/enter.c +++ b/sys/src/libdraw/enter.c @@ -160,10 +160,12 @@ enter(char *ask, char *buf, int len, Mousectl *mc, Keyboardctl *kc, Screen *scr) } 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; } |