Posted to tcl by andreas_kupries at Mon Apr 30 21:24:42 GMT 2007view pretty

Index: generic/tclIO.c
===================================================================
RCS file: /cvsroot/tcl/tcl/generic/tclIO.c,v
retrieving revision 1.118
diff -w -u -r1.118 tclIO.c
--- generic/tclIO.c     20 Apr 2007 05:51:10 -0000      1.118
+++ generic/tclIO.c     30 Apr 2007 21:23:43 -0000
@@ -9962,7 +9962,7 @@
     int explicitResult, numOptions, lc, lcn;
     Tcl_Obj **lv, **lvn;
     int res, i, j, val, lignore, cignore;
-    Tcl_Obj *newlevel = NULL, *newcode = NULL;
+    int newlevel = -1, newcode = -1;

     /* ASSERT msg != NULL */

@@ -10005,7 +10005,7 @@
            res = Tcl_GetIntFromObj(NULL, lv[i+1], &val);
            if (((res == TCL_OK) && (val != 1)) || ((res != TCL_OK) &&
                    (0 != strcmp(TclGetString(lv[i+1]), "error")))) {
-               newcode = Tcl_NewIntObj(1);
+               newcode = 1;
            }
        } else if (0 == strcmp(TclGetString(lv[i]), "-level")) {
            /*
@@ -10014,7 +10014,7 @@

            res = Tcl_GetIntFromObj(NULL, lv [i+1], &val);
            if ((res != TCL_OK) || (val != 0)) {
-               newlevel = Tcl_NewIntObj(0);
+               newlevel = 0;
            }
        }
     }
@@ -10023,7 +10023,7 @@
      * -code, -level are either not present or ok. Nothing to do.
      */

-    if (!newlevel && !newcode) {
+    if ((newlevel < 0) && (newcode < 0)) {
        return msg;
     }

@@ -10031,10 +10031,10 @@
     if (explicitResult) {
        lcn ++;
     }
-    if (newlevel) {
+    if (newlevel >= 0) {
        lcn += 2;
     }
-    if (newcode) {
+    if (newcode >= 0) {
        lcn += 2;
     }

@@ -10050,20 +10050,20 @@
     lignore = cignore = 0;
     for (i=0, j=0; i<numOptions; i+=2) {
        if (0 == strcmp(TclGetString(lv[i]), "-level")) {
-           if (newlevel) {
+           if (newlevel >= 0) {
                lvn[j++] = lv[i];
-               lvn[j++] = newlevel;
-               newlevel = NULL;
+               lvn[j++] = Tcl_NewIntObj(newlevel);
+               newlevel = -1;
                lignore = 1;
                continue;
            } else if (lignore) {
                continue;
            }
        } else if (0 == strcmp(TclGetString(lv[i]), "-code")) {
-           if (newcode) {
+           if (newcode >= 0) {
                lvn[j++] = lv[i];
-               lvn[j++] = newcode;
-               newcode = NULL;
+               lvn[j++] = Tcl_NewIntObj (newcode);
+               newcode = -1;
                cignore = 1;
                continue;
            } else if (cignore) {