diff options
author | Steve Bennett <steveb@workware.net.au> | 2016-08-28 13:40:12 +1000 |
---|---|---|
committer | Steve Bennett <steveb@workware.net.au> | 2016-08-28 13:47:50 +1000 |
commit | cc6d59e7bb61f49c77bd89fbf49815279bcda11a (patch) | |
tree | c0417bae25e70f14af3002536b57a3614f9882b2 | |
parent | 7f8ca8fbdeb07935001ac46968700ef3b9e2e38a (diff) | |
download | jimtcl-cc6d59e7bb61f49c77bd89fbf49815279bcda11a.zip jimtcl-cc6d59e7bb61f49c77bd89fbf49815279bcda11a.tar.gz jimtcl-cc6d59e7bb61f49c77bd89fbf49815279bcda11a.tar.bz2 |
zlib: Fix arg error checking
It is wrong to call Jim_WrongNumArgs() with argc == 0.
Instead -1 should be returned from the subcmd function to display the standard error message.
Add a --maintainer check for this condition in Jim_WrongNumArgs() and fix the zlib unit tests.
Signed-off-by: Steve Bennett <steveb@workware.net.au>
-rw-r--r-- | jim-zlib.c | 18 | ||||
-rw-r--r-- | jim.c | 6 | ||||
-rw-r--r-- | tests/zlib.test | 14 |
3 files changed, 18 insertions, 20 deletions
@@ -132,19 +132,16 @@ static int Jim_Gzip(Jim_Interp *interp, int argc, Jim_Obj *const *argv) if (argc == 3) { if (!Jim_CompareStringImmediate(interp, argv[1], "-level")) { - Jim_WrongNumArgs(interp, 0, argv, "data ?-level level?"); - return JIM_ERR; + return -1; } if (Jim_GetLong(interp, argv[2], &level) != JIM_OK) { - Jim_WrongNumArgs(interp, 0, argv, "data ?-level level?"); - return JIM_ERR; + return -1; } } else if (argc != 1) { - Jim_WrongNumArgs(interp, 0, argv, "data ?-level level?"); - return JIM_ERR; + return -1; } in = Jim_GetString(argv[0], &len); @@ -240,19 +237,16 @@ static int Jim_Gunzip(Jim_Interp *interp, int argc, Jim_Obj *const *argv) if (argc == 3) { if (!Jim_CompareStringImmediate(interp, argv[1], "-buffersize")) { - Jim_WrongNumArgs(interp, 0, argv, "data ?-buffersize size?"); - return JIM_ERR; + return -1; } if (Jim_GetLong(interp, argv[2], &bufsiz) != JIM_OK) { - Jim_WrongNumArgs(interp, 0, argv, "data ?-buffersize size?"); - return JIM_ERR; + return -1; } } else if (argc != 1) { - Jim_WrongNumArgs(interp, 0, argv, "data ?-buffersize size?"); - return JIM_ERR; + return -1; } in = Jim_GetString(argv[0], &len); @@ -11363,7 +11363,11 @@ int Jim_SubstObj(Jim_Interp *interp, Jim_Obj *substObjPtr, Jim_Obj **resObjPtrPt void Jim_WrongNumArgs(Jim_Interp *interp, int argc, Jim_Obj *const *argv, const char *msg) { Jim_Obj *objPtr; - Jim_Obj *listObjPtr = Jim_NewListObj(interp, argv, argc); + Jim_Obj *listObjPtr; + + JimPanic((argc == 0, "Jim_WrongNumArgs() called with argc=0")); + + listObjPtr = Jim_NewListObj(interp, argv, argc); if (*msg) { Jim_ListAppendElement(interp, listObjPtr, Jim_NewStringObj(interp, msg, -1)); diff --git a/tests/zlib.test b/tests/zlib.test index 3153ab7..f2b4a36 100644 --- a/tests/zlib.test +++ b/tests/zlib.test @@ -69,19 +69,19 @@ test zlib-3.2 {zlib gunzip usage 2} -returnCodes error -body { test zlib-3.3 {zlib gunzip usage 3} -returnCodes error -body { zlib gunzip aaa 4 -} -result {wrong # args: should be "data ?-buffersize size?"} +} -result {wrong # args: should be "zlib gunzip data ?-buffersize size?"} test zlib-3.4 {zlib gunzip usage 4} -returnCodes error -body { zlib gunzip aaa -buffersize -} -result {wrong # args: should be "data ?-buffersize size?"} +} -result {wrong # args: should be "zlib gunzip data ?-buffersize size?"} test zlib-3.5 {zlib gunzip usage 5} -returnCodes error -body { zlib gunzip aaa -buffersize a -} -result {wrong # args: should be "data ?-buffersize size?"} +} -result {wrong # args: should be "zlib gunzip data ?-buffersize size?"} test zlib-3.6 {zlib gunzip usage 5} -returnCodes error -body { zlib gunzip aaa -buffersize a -} -result {wrong # args: should be "data ?-buffersize size?"} +} -result {wrong # args: should be "zlib gunzip data ?-buffersize size?"} test zlib-3.7 {zlib gunzip usage 6} -returnCodes error -body { zlib gunzip aaa -buffersize 0 @@ -93,15 +93,15 @@ test zlib-3.8 {zlib gzip usage 1} -returnCodes error -body { test zlib-3.9 {zlib gzip usage 2} -returnCodes error -body { zlib gzip aa 9 -} -result {wrong # args: should be "data ?-level level?"} +} -result {wrong # args: should be "zlib gzip data ?-level level?"} test zlib-3.10 {zlib gzip usage 3} -returnCodes error -body { zlib gzip -level a -} -result {wrong # args: should be "data ?-level level?"} +} -result {wrong # args: should be "zlib gzip data ?-level level?"} test zlib-3.11 {zlib gzip usage 4} -returnCodes error -body { zlib gzip -level 9 a -} -result {wrong # args: should be "data ?-level level?"} +} -result {wrong # args: should be "zlib gzip data ?-level level?"} test zlib-4.1 {zlib gzip/gunzip} { zlib gunzip [zlib gzip abcdefghijklm] |