diff options
Diffstat (limited to 'win')
-rw-r--r-- | win/tclWin32Dll.c | 26 | ||||
-rw-r--r-- | win/tclWinInit.c | 31 |
2 files changed, 55 insertions, 2 deletions
diff --git a/win/tclWin32Dll.c b/win/tclWin32Dll.c index d3a1172..506cf78 100644 --- a/win/tclWin32Dll.c +++ b/win/tclWin32Dll.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWin32Dll.c,v 1.17 2002/10/29 14:17:58 vincentdarley Exp $ + * RCS: @(#) $Id: tclWin32Dll.c,v 1.18 2002/12/06 23:22:59 hobbs Exp $ */ #include "tclWinInt.h" @@ -512,6 +512,30 @@ TclWinSetInterfaces( /* *--------------------------------------------------------------------------- * + * TclWinResetInterfaces -- + * + * Called during finalization to reset us to a safe state for reuse. + * + * Results: + * None. + * + * Side effects: + * None. + * + *--------------------------------------------------------------------------- + */ + +void +TclWinResetInterfaces() +{ + Tcl_FreeEncoding(tclWinTCharEncoding); + tclWinTCharEncoding = NULL; + tclWinProcs = &asciiProcs; +} + +/* + *--------------------------------------------------------------------------- + * * Tcl_WinUtfToTChar, Tcl_WinTCharToUtf -- * * Convert between UTF-8 and Unicode when running Windows NT or 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); } /* |