From: Pasi Kallinen Date: Wed, 6 Jan 2016 09:50:07 +0000 (+0200) Subject: Fix bz66: Count number cannot be backspaced X-Git-Tag: NetHack-3.6.1_RC01~1064^2~15 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1bc05714b527737d671d065a2df5643c48a38e7a;p=nethack Fix bz66: Count number cannot be backspaced ... or at least partially fix it - ^H does now backspace. I can't be bothered to dive into the (n)curses raw-mode stuff. --- diff --git a/src/cmd.c b/src/cmd.c index 191ab71f3..dc1ae79df 100644 --- a/src/cmd.c +++ b/src/cmd.c @@ -3874,6 +3874,7 @@ parse() #endif register int foo; boolean prezero = FALSE; + boolean backspaced = FALSE; multi = 0; context.move = 1; @@ -3885,13 +3886,23 @@ parse() if (!Cmd.num_pad || (foo = readchar()) == 'n') for (;;) { foo = readchar(); - if (foo >= '0' && foo <= '9') { - multi = 10 * multi + foo - '0'; + if ((foo >= '0' && foo <= '9') || (foo == '\b')) { + if (foo >= '0' && foo <= '9') + multi = 10 * multi + foo - '0'; + else { + multi = multi / 10; + backspaced = TRUE; + } if (multi < 0 || multi >= LARGEST_INT) multi = LARGEST_INT; - if (multi > 9) { + if (multi > 9 || backspaced) { clear_nhwindow(WIN_MESSAGE); - Sprintf(in_line, "Count: %d", multi); + if (backspaced && !multi) + Sprintf(in_line, "Count: "); + else { + Sprintf(in_line, "Count: %d", multi); + backspaced = FALSE; + } pline1(in_line); mark_synch(); }