Index: src/main.c
==================================================================
--- src/main.c
+++ src/main.c
@@ -86,12 +86,11 @@
 ** All Tcl related context information is in this structure.  This structure
 ** definition has been copied from and should be kept in sync with the one in
 ** "th_tcl.c".
 */
 struct TclContext {
-  int argc;
-  char **argv;
+  char *argv0;
   Tcl_Interp *interp;
 };
 #endif
 
 /*
@@ -412,12 +411,11 @@
   int idx;
   int rc;
   int i;
 
 #ifdef FOSSIL_ENABLE_TCL
-  g.tcl.argc = argc;
-  g.tcl.argv = argv;
+  g.tcl.argv0 = argv[0];
   g.tcl.interp = 0;
 #endif
 
   sqlite3_config(SQLITE_CONFIG_LOG, fossil_sqlite_log, 0);
   memset(&g, 0, sizeof(g));

Index: src/th_tcl.c
==================================================================
--- src/th_tcl.c
+++ src/th_tcl.c
@@ -93,12 +93,11 @@
 /*
 ** Tcl context information used by TH1.  This structure definition has been
 ** copied from and should be kept in sync with the one in "main.c".
 */
 struct TclContext {
-  int argc;
-  char **argv;
+  char *argv0;
   Tcl_Interp *interp;
 };
 
 /*
 ** Syntax:
@@ -341,11 +340,11 @@
 
 /*
 ** Array of Tcl integration commands.  Used when adding or removing the Tcl
 ** integration commands from TH1.
 */
-static struct _Command {
+static const struct _Command {
   const char *zName;
   Th_CommandProc xProc;
   void *pContext;
 } aCommand[] = {
   {"tclEval",   tclEval_command,   0},
@@ -389,12 +388,12 @@
     return TH_ERROR;
   }
   if ( tclContext->interp ){
     return TH_OK;
   }
-  if ( tclContext->argc>0 && tclContext->argv ) {
-    Tcl_FindExecutable(tclContext->argv[0]);
+  if ( tclContext->argv0 ){
+    Tcl_FindExecutable(tclContext->argv0);
   }
   tclInterp = tclContext->interp = Tcl_CreateInterp();
   if( !tclInterp || Tcl_InterpDeleted(tclInterp) ){
     Th_ErrorMessage(interp,
         "Could not create Tcl interpreter", (const char *)"", 0);