diff options
author | Steve Bennett <steveb@workware.net.au> | 2024-04-02 08:08:27 +1000 |
---|---|---|
committer | Steve Bennett <steveb@workware.net.au> | 2024-04-02 08:20:47 +1000 |
commit | 4b980e667b2a07f5ea3aeb437079db9be6f89979 (patch) | |
tree | e24a5cf225aadd0c7d688b099cf08ce6f430b535 | |
parent | 47682f265f6ae84e3c661b565af2b8a517b0e121 (diff) | |
download | jimtcl-4b980e667b2a07f5ea3aeb437079db9be6f89979.zip jimtcl-4b980e667b2a07f5ea3aeb437079db9be6f89979.tar.gz jimtcl-4b980e667b2a07f5ea3aeb437079db9be6f89979.tar.bz2 |
lsort: don't try to sort a list of length 0 or 1
Signed-off-by: Steve Bennett <steveb@workware.net.au>
-rw-r--r-- | jim.c | 12 |
1 files changed, 9 insertions, 3 deletions
@@ -13423,6 +13423,8 @@ static int Jim_LsortCoreCommand(Jim_Interp *interp, int argc, Jim_Obj *const arg int retCode; int shared; long stride = 1; + Jim_Obj **elements; + int listlen; struct lsort_info info; @@ -13503,13 +13505,17 @@ badindex: } } resObj = argv[argc - 1]; + JimListGetElements(interp, resObj, &listlen, &elements); + if (listlen <= 1) { + /* Nothing to do */ + Jim_SetResult(interp, resObj); + return JIM_OK; + } + if (stride > 1) { Jim_Obj *tmpListObj; - Jim_Obj **elements; - int listlen; int i; - JimListGetElements(interp, resObj, &listlen, &elements); if (listlen % stride) { Jim_SetResultString(interp, "list size must be a multiple of the stride length", -1); return JIM_ERR; |