summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Bennett <steveb@workware.net.au>2014-10-10 18:47:23 +1000
committerSteve Bennett <steveb@workware.net.au>2014-10-10 19:07:20 +1000
commit7748e1073aedaecb20f1526c38fc223b4937f0e3 (patch)
tree9b8f29beacda12b1f12a30826c826611f3bcccfe
parent97e38369e9957929ab86d1536018c97f921ec9ad (diff)
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 <steveb@workware.net.au>
-rw-r--r--jim.c5
1 files changed, 4 insertions, 1 deletions
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);
}