summaryrefslogtreecommitdiffstats
path: root/generic/tclEncoding.c
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2013-03-29 12:46:00 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2013-03-29 12:46:00 (GMT)
commitc310833021527bb78a862501a5be64ab86c00ca3 (patch)
tree5c3a7aa0314a66072e62da1ccb527b401324f374 /generic/tclEncoding.c
parent30a8ec9547d91220939f06af49e0c22de3fcfbff (diff)
downloadtcl-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.c40
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;
}