sync with Jim Tcl repository.
authoroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Mon, 25 Aug 2008 06:50:30 +0000 (06:50 +0000)
committeroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Mon, 25 Aug 2008 06:50:30 +0000 (06:50 +0000)
git-svn-id: svn://svn.berlios.de/openocd/trunk@964 b42882b7-edfa-0310-969c-e2dbd0fdcd60

src/helper/jim.c
src/helper/jim.h

index ce7b8f62b98af80f798af3b37de9c8194df5e3fb..a9838ab0d50b30ccb724976fa0f885791b9280d7 100644 (file)
@@ -2173,8 +2173,9 @@ static Jim_Obj *JimStringToUpper(Jim_Interp *interp, Jim_Obj *strObjPtr)
  * TODO: Lots of things work - via a hack
  *       However, no format item can be >= JIM_MAX_FMT 
  */
-Jim_Obj *Jim_FormatString(Jim_Interp *interp, Jim_Obj *fmtObjPtr,
-        int objc, Jim_Obj *const *objv)
+#define JIM_MAX_FMT 2048
+static Jim_Obj *Jim_FormatString_Inner(Jim_Interp *interp, Jim_Obj *fmtObjPtr,
+        int objc, Jim_Obj *const *objv, char *sprintf_buf)
 {
     const char *fmt, *_fmt;
     int fmtLen;
@@ -2190,8 +2191,6 @@ Jim_Obj *Jim_FormatString(Jim_Interp *interp, Jim_Obj *fmtObjPtr,
         jim_wide wideValue;
                double doubleValue;
                /* we cheat and use Sprintf()! */
-#define JIM_MAX_FMT 2048
-               char sprintf_buf[JIM_MAX_FMT];
                char fmt_str[100];
                char *cp;
                int width;
@@ -2456,6 +2455,15 @@ Jim_Obj *Jim_FormatString(Jim_Interp *interp, Jim_Obj *fmtObjPtr,
     return resObjPtr;
 }
 
+Jim_Obj *Jim_FormatString(Jim_Interp *interp, Jim_Obj *fmtObjPtr,
+        int objc, Jim_Obj *const *objv)
+{
+       char *sprintf_buf=malloc(JIM_MAX_FMT);
+       Jim_Obj *t=Jim_FormatString_Inner(interp, fmtObjPtr, objc, objv, sprintf_buf);
+       free(sprintf_buf);
+       return t; 
+}
+
 /* -----------------------------------------------------------------------------
  * Compared String Object
  * ---------------------------------------------------------------------------*/
@@ -8777,15 +8785,17 @@ int Jim_EvalFile(Jim_Interp *interp, const char *filename)
     int nread, totread, maxlen, buflen;
     int retval;
     Jim_Obj *scriptObjPtr;
-    char cwd[ 2048 ];
     
     if ((fp = fopen(filename, "r")) == NULL) {
+       const int cwd_len=2048;
+               char *cwd=malloc(cwd_len);
         Jim_SetResult(interp, Jim_NewEmptyStringObj(interp));
-       getcwd( cwd, sizeof(cwd) );
+       getcwd( cwd, cwd_len );
         Jim_AppendStrings(interp, Jim_GetResult(interp),
        "Error loading script \"", filename, "\"",
            " cwd: ", cwd,
            " err: ", strerror(errno), NULL);
+           free(cwd);
         return JIM_ERR;
     }
     buflen = 1024;
index 342c19e3d631f76a4dcb85621a017379c4ee0d47..a89500fb15af35a7326bdc3315efad4776b72e16 100644 (file)
@@ -3,7 +3,7 @@
  * Copyright 2005 Salvatore Sanfilippo <antirez@invece.org>
  * Copyright 2005 Clemens Hintze <c.hintze@gmx.net>
  * Copyright 2005 patthoyts - Pat Thoyts <patthoyts@users.sf.net> 
- * Copyright 2008 oharboe - Øyvind Harboe - soyvind.harboe@zylin.com
+ * Copyright 2008 oharboe - Øyvind Harboe - oyvind.harboe@zylin.com
  * Copyright 2008 Andrew Lunn <andrew@lunn.ch>
  * Copyright 2008 Duane Ellis <openocd@duaneellis.com>
  * Copyright 2008 Uwe Klein <uklein@klein-messgeraete.de>