From 9cd4c76b50b8fde9e21943bcd520168fa9d57290 Mon Sep 17 00:00:00 2001 From: Denis Vlasenko Date: Wed, 18 Jun 2008 19:22:19 +0000 Subject: [PATCH] ash: fix "shift BIGNUM" and "read with no variable name" bugs. omg. hush testsuite helps to find bugs in ash! what next? function old new delta static.arg_REPLY - 8 +8 readcmd 1023 1021 -2 shiftcmd 129 125 -4 ------------------------------------------------------------------------------ (add/remove: 1/0 grow/shrink: 0/2 up/down: 8/-6) Total: 2 bytes --- shell/ash.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/shell/ash.c b/shell/ash.c index b490b69..f8e4e7d 100644 --- a/shell/ash.c +++ b/shell/ash.c @@ -9549,7 +9549,7 @@ shiftcmd(int argc ATTRIBUTE_UNUSED, char **argv) if (argv[1]) n = number(argv[1]); if (n > shellparam.nparam) - ash_msg_and_raise_error("can't shift that many"); + n = shellparam.nparam; INT_OFF; shellparam.nparam -= n; for (ap1 = shellparam.p; --n >= 0; ap1++) { @@ -11994,6 +11994,8 @@ typedef enum __rlimit_resource rlim_t; static int readcmd(int argc ATTRIBUTE_UNUSED, char **argv ATTRIBUTE_UNUSED) { + static const char *const arg_REPLY[] = { "REPLY", NULL }; + char **ap; int backslash; char c; @@ -12086,7 +12088,7 @@ readcmd(int argc ATTRIBUTE_UNUSED, char **argv ATTRIBUTE_UNUSED) } ap = argptr; if (*ap == NULL) - ash_msg_and_raise_error("arg count"); + ap = (char**)arg_REPLY; ifs = bltinlookup("IFS"); if (ifs == NULL) ifs = defifs; -- 2.7.4