From 1bc05714b527737d671d065a2df5643c48a38e7a Mon Sep 17 00:00:00 2001 From: Pasi Kallinen Date: Wed, 6 Jan 2016 11:50:07 +0200 Subject: [PATCH] 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. --- src/cmd.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) 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(); } -- 2.40.0