diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2013-03-29 12:46:00 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2013-03-29 12:46:00 (GMT) |
commit | c310833021527bb78a862501a5be64ab86c00ca3 (patch) | |
tree | 5c3a7aa0314a66072e62da1ccb527b401324f374 /generic/tclEncoding.c | |
parent | 30a8ec9547d91220939f06af49e0c22de3fcfbff (diff) | |
download | tcl-c310833021527bb78a862501a5be64ab86c00ca3.zip tcl-c310833021527bb78a862501a5be64ab86c00ca3.tar.gz tcl-c310833021527bb78a862501a5be64ab86c00ca3.tar.bz2 |
Always set "argv0", irrespective of the "argc" value.
Diffstat (limited to 'generic/tclEncoding.c')
-rw-r--r-- | generic/tclEncoding.c | 40 |
1 files changed, 21 insertions, 19 deletions
diff --git a/generic/tclEncoding.c b/generic/tclEncoding.c index 37b50c8..9d00670 100644 --- a/generic/tclEncoding.c +++ b/generic/tclEncoding.c @@ -1456,7 +1456,7 @@ Tcl_InitSubsystems(int flags, ...) TclpSetInitialEncodings(); TclpFindExecutable(argv0); - if ((flags&TCL_INIT_CREATE) && (--argc >= 0)) { + if (flags&TCL_INIT_CREATE) { Tcl_Obj *argvPtr; Tcl_DString ds; @@ -1465,26 +1465,28 @@ Tcl_InitSubsystems(int flags, ...) Tcl_SetVar2Ex(interp, "argv0", NULL, TclDStringToObj(&ds), TCL_GLOBAL_ONLY); } - Tcl_SetVar2Ex(interp, "argc", NULL, Tcl_NewIntObj(argc), - TCL_GLOBAL_ONLY); - argvPtr = Tcl_NewListObj(argc, NULL); - if ((flags & TCL_INIT_CREATE) == TCL_INIT_CREATE_UTF8) { - while (argc--) { - Tcl_ListObjAppendElement(NULL, argvPtr, - Tcl_NewStringObj(*++argv, -1)); - } - } else if ((flags & TCL_INIT_CREATE) == TCL_INIT_CREATE_UNICODE) { - while (argc--) { - Tcl_ListObjAppendElement(NULL, argvPtr, - Tcl_NewUnicodeObj(*++argv, -1)); - } - } else { - while (argc--) { - Tcl_ExternalToUtfDString(NULL, *++argv, -1, &ds); - Tcl_ListObjAppendElement(NULL, argvPtr, TclDStringToObj(&ds)); + if(--argc >= 0) { + Tcl_SetVar2Ex(interp, "argc", NULL, Tcl_NewIntObj(argc), + TCL_GLOBAL_ONLY); + argvPtr = Tcl_NewListObj(argc, NULL); + if ((flags & TCL_INIT_CREATE) == TCL_INIT_CREATE_UTF8) { + while (argc--) { + Tcl_ListObjAppendElement(NULL, argvPtr, + Tcl_NewStringObj(*++argv, -1)); + } + } else if ((flags & TCL_INIT_CREATE) == TCL_INIT_CREATE_UNICODE) { + while (argc--) { + Tcl_ListObjAppendElement(NULL, argvPtr, + Tcl_NewUnicodeObj(*++argv, -1)); + } + } else { + while (argc--) { + Tcl_ExternalToUtfDString(NULL, *++argv, -1, &ds); + Tcl_ListObjAppendElement(NULL, argvPtr, TclDStringToObj(&ds)); + } } + Tcl_SetVar2Ex(interp, "argv", NULL, argvPtr, TCL_GLOBAL_ONLY); } - Tcl_SetVar2Ex(interp, "argv", NULL, argvPtr, TCL_GLOBAL_ONLY); } return interp; } |