summaryrefslogtreecommitdiffstats
path: root/win/tclWinInit.c
diff options
context:
space:
mode:
Diffstat (limited to 'win/tclWinInit.c')
-rw-r--r--win/tclWinInit.c31
1 files changed, 30 insertions, 1 deletions
diff --git a/win/tclWinInit.c b/win/tclWinInit.c
index c4782e3..bc0c980 100644
--- a/win/tclWinInit.c
+++ b/win/tclWinInit.c
@@ -7,7 +7,7 @@
* Copyright (c) 1998-1999 by Scriptics Corporation.
* All rights reserved.
*
- * RCS: @(#) $Id: tclWinInit.c,v 1.35 2002/02/08 02:52:55 dgp Exp $
+ * RCS: @(#) $Id: tclWinInit.c,v 1.36 2002/12/06 23:22:59 hobbs Exp $
*/
#include "tclWinInt.h"
@@ -461,7 +461,34 @@ ToUtf(
*dst = '\0';
return (int) (dst - start);
}
+
+/*
+ *---------------------------------------------------------------------------
+ *
+ * WinEncodingsCleanup --
+ *
+ * Reset information to its original state in finalization to
+ * allow for reinitialization to be possible.
+ *
+ * Results:
+ * None.
+ *
+ * Side effects:
+ * Static information reset to startup state.
+ *
+ *---------------------------------------------------------------------------
+ */
+static void
+WinEncodingsCleanup(ClientData clientData)
+{
+ TclWinResetInterfaces();
+ libraryPathEncodingFixed = 0;
+ if (binaryEncoding != NULL) {
+ Tcl_FreeEncoding(binaryEncoding);
+ binaryEncoding = NULL;
+ }
+}
/*
*---------------------------------------------------------------------------
@@ -538,6 +565,8 @@ TclpSetInitialEncodings()
encoding = "iso8859-1";
binaryEncoding = Tcl_GetEncoding(NULL, encoding);
}
+
+ Tcl_CreateExitHandler(WinEncodingsCleanup, NULL);
}
/*