diff options
author | antirez <antirez> | 2005-04-04 19:44:55 +0000 |
---|---|---|
committer | antirez <antirez> | 2005-04-04 19:44:55 +0000 |
commit | a96abb6e891079e1e2dadcebee354fc72ed7d9bf (patch) | |
tree | d7a0ce8278c0d5099e17a9d3a219caededef2d54 /jim.c | |
parent | 4af671e3b9d7a539d5fd4bf7b2cef71a8a046edc (diff) | |
download | jimtcl-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.c | 104 |
1 files changed, 3 insertions, 101 deletions
@@ -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]; |