From 7748e1073aedaecb20f1526c38fc223b4937f0e3 Mon Sep 17 00:00:00 2001 From: Steve Bennett Date: Fri, 10 Oct 2014 18:47:23 +1000 Subject: [PATCH] alias: don't rely on internal list never shimmering It is possible for the alias prefix to shimmer, especially if the prefix is a list with a single element Signed-off-by: Steve Bennett --- jim.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/jim.c b/jim.c index 76a192e..ca4b4d6 100644 --- a/jim.c +++ b/jim.c @@ -2294,6 +2294,7 @@ const char *Jim_String(Jim_Obj *objPtr) { if (objPtr->bytes == NULL) { /* Invalid string repr. Generate it. */ + JimPanic((objPtr->typePtr == NULL, "UpdateStringProc called against typeless value.")); JimPanic((objPtr->typePtr->updateStringProc == NULL, "UpdateStringProc called against '%s' type.", objPtr->typePtr->name)); objPtr->typePtr->updateStringProc(objPtr); } @@ -10426,6 +10427,8 @@ static int JimEvalObjList(Jim_Interp *interp, Jim_Obj *listPtr) { int retcode = JIM_OK; + JimPanic((Jim_IsList(listPtr) == 0, "JimEvalObjList() invoked on non-list.")); + if (listPtr->internalRep.listValue.len) { Jim_IncrRefCount(listPtr); retcode = JimInvokeCommand(interp, @@ -13114,7 +13117,7 @@ static int JimAliasCmd(Jim_Interp *interp, int argc, Jim_Obj *const *argv) /* prefixListObj is a list to which the args need to be appended */ cmdList = Jim_DuplicateObj(interp, prefixListObj); - ListInsertElements(cmdList, -1, argc - 1, argv + 1); + Jim_ListInsertElements(interp, cmdList, Jim_ListLength(interp, cmdList), argc - 1, argv + 1); return JimEvalObjList(interp, cmdList); } -- 2.11.4.GIT