aboutsummaryrefslogtreecommitdiff
path: root/jim.c
diff options
context:
space:
mode:
authorantirez <antirez>2005-04-04 19:44:55 +0000
committerantirez <antirez>2005-04-04 19:44:55 +0000
commita96abb6e891079e1e2dadcebee354fc72ed7d9bf (patch)
treed7a0ce8278c0d5099e17a9d3a219caededef2d54 /jim.c
parent4af671e3b9d7a539d5fd4bf7b2cef71a8a046edc (diff)
downloadjimtcl-a96abb6e891079e1e2dadcebee354fc72ed7d9bf.zip
jimtcl-a96abb6e891079e1e2dadcebee354fc72ed7d9bf.tar.gz
jimtcl-a96abb6e891079e1e2dadcebee354fc72ed7d9bf.tar.bz2
Fixed a memory leak introduced some day ago.
Thanks to 'valgrind'.
Diffstat (limited to 'jim.c')
-rw-r--r--jim.c104
1 files changed, 3 insertions, 101 deletions
diff --git a/jim.c b/jim.c
index b6148fe..5284850 100644
--- a/jim.c
+++ b/jim.c
@@ -2,7 +2,7 @@
* Copyright 2005 Salvatore Sanfilippo <antirez@invece.org>
* Copyright 2005 Clemens Hintze <c.hintze@gmx.net>
*
- * $Id: jim.c,v 1.143 2005/04/04 07:58:11 antirez Exp $
+ * $Id: jim.c,v 1.144 2005/04/04 19:44:55 antirez Exp $
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -2487,6 +2487,7 @@ static void ScriptObjAddToken(Jim_Interp *interp, struct ScriptObj *script,
type == JIM_TT_ESC && len == 0)
{
/* Don't add empty tokens used in interpolation */
+ Jim_Free(strtoken);
return;
}
/* Make space for a new istruction */
@@ -11344,102 +11345,6 @@ static int Jim_PackageCoreCommand(Jim_Interp *interp, int argc,
return JIM_OK;
}
-#if 0 /* WORK IN PROGRESS (SS) */
-/* [code] */
-static int Jim_CodeCoreCommand(Jim_Interp *interp, int argc,
- Jim_Obj *const *argv)
-{
- int option;
- const char *options[] = {"parse", "glue", NULL};
- const char *tokenTypeStr[] = {"str", "esc", "var", "array", "cmd", "sep",
- "eol", NULL};
-
- enum {OPT_PARSE, OPT_GLUE};
-
- if (argc < 2) {
- Jim_WrongNumArgs(interp, 1, argv, "option ?arguments ...?");
- return JIM_ERR;
- }
- if (Jim_GetEnum(interp, argv[1], options, &option, "option",
- JIM_ERRMSG) != JIM_OK)
- return JIM_ERR;
-
- if (option == OPT_PARSE) {
- struct JimParserCtx parser;
- const char *scriptText;
- int scriptTextLen;
- Jim_Obj *objPtr;
-
- if (argc != 3) {
- Jim_WrongNumArgs(interp, 2, argv, "program");
- return JIM_ERR;
- }
-
- scriptText = Jim_GetString(argv[2], &scriptTextLen);
- JimParserInit(&parser, scriptText, scriptTextLen, 0);
- objPtr = Jim_NewListObj(interp, NULL, 0);
- while(!JimParserEof(&parser)) {
- char *token;
- int len, type, linenr;
- Jim_Obj *subListObjPtr;
-
- JimParseScript(&parser);
- token = JimParserGetToken(&parser, &len, &type, &linenr);
-
- subListObjPtr = Jim_NewListObj(interp, NULL, 0);
- Jim_ListAppendElement(interp, subListObjPtr,
- Jim_NewStringObj(interp, tokenTypeStr[type], -1));
- Jim_ListAppendElement(interp, subListObjPtr,
- Jim_NewStringObjNoAlloc(interp, token, len));
- Jim_ListAppendElement(interp, objPtr, subListObjPtr);
- }
- Jim_SetResult(interp, objPtr);
- } else if (option == OPT_GLUE) {
- Jim_Obj *objPtr;
- int tokens, i;
-
- if (argc != 3) {
- Jim_WrongNumArgs(interp, 2, argv, "tokens");
- return JIM_ERR;
- }
- objPtr = Jim_NewStringObj(interp, "", 0);
- Jim_ListLength(interp, argv[2], &tokens);
- for (i = 0; i < tokens; i++) {
- Jim_Obj *subListObjPtr, **objv;
- int subListLen, ttype;
-
- Jim_ListIndex(interp, argv[2], i, &subListObjPtr, JIM_NONE);
- JimListGetElements(interp, subListObjPtr, &subListLen, &objv);
- if (subListLen != 2) {
- char buf[64];
- sprintf(buf, "%d", subListLen);
- Jim_SetResult(interp, Jim_NewEmptyStringObj(interp));
- Jim_AppendStrings(interp, Jim_GetResult(interp),
- "bad tokens list: element at index '", buf, "' "
- "is not a two elements list", NULL);
- Jim_FreeNewObj(objPtr);
- }
- if (Jim_GetEnum(interp, objv[0], tokenTypeStr, &ttype, "token type",
- JIM_ERRMSG) != JIM_OK) {
- Jim_FreeNewObj(objPtr);
- return JIM_ERR;
- }
- switch (ttype) {
- case JIM_TT_STR:
- case JIM_TT_ESC:
- case JIM_TT_VAR:
- case JIM_TT_DICTSUGAR:
- case JIM_TT_CMD:
- case JIM_TT_SEP:
- case JIM_TT_EOL:
- }
- }
- Jim_SetResult(interp, objPtr);
- }
- return JIM_OK;
-}
-#endif
-
static struct {
const char *name;
Jim_CmdProc cmdProc;
@@ -11504,9 +11409,6 @@ static struct {
{"scope", Jim_ScopeCoreCommand},
{"rand", Jim_RandCoreCommand},
{"package", Jim_PackageCoreCommand},
-#if 0 /* work in progress */
- {"code", Jim_CodeCoreCommand},
-#endif
{NULL, NULL},
};
@@ -11575,7 +11477,7 @@ int Jim_InteractivePrompt(Jim_Interp *interp)
printf("Welcome to Jim version %d.%d, "
"Copyright (c) 2005 Salvatore Sanfilippo\n",
JIM_VERSION / 100, JIM_VERSION % 100);
- printf("CVS ID: $Id: jim.c,v 1.143 2005/04/04 07:58:11 antirez Exp $\n");
+ printf("CVS ID: $Id: jim.c,v 1.144 2005/04/04 19:44:55 antirez Exp $\n");
Jim_SetVariableStrWithStr(interp, "jim_interactive", "1");
while (1) {
char buf[1024];