diff options
Diffstat (limited to 'jim.c')
-rw-r--r-- | jim.c | 26 |
1 files changed, 16 insertions, 10 deletions
@@ -15023,16 +15023,22 @@ wrongargs: } else if (errorCodeObj) { int len = Jim_ListLength(interp, argv[idx + 1]); - int i; - - ret = JIM_OK; - /* Try to match the sublist against errorcode */ - for (i = 0; i < len; i++) { - Jim_Obj *matchObj = Jim_ListGetIndex(interp, argv[idx + 1], i); - Jim_Obj *objPtr = Jim_ListGetIndex(interp, errorCodeObj, i); - if (Jim_StringCompareObj(interp, matchObj, objPtr, 0) != 0) { - ret = -1; - break; + + if (len > Jim_ListLength(interp, errorCodeObj)) { + /* More elements in the sublist than in the errorCode so we can't match */ + ret = -1; + } + else { + int i; + ret = JIM_OK; + /* Try to match the sublist against errorcode */ + for (i = 0; i < len; i++) { + Jim_Obj *matchObj = Jim_ListGetIndex(interp, argv[idx + 1], i); + Jim_Obj *objPtr = Jim_ListGetIndex(interp, errorCodeObj, i); + if (Jim_StringCompareObj(interp, matchObj, objPtr, 0) != 0) { + ret = -1; + break; + } } } } |