diff options
| author | dgp@users.sourceforge.net <dgp> | 2014-12-17 19:57:40 (GMT) |
|---|---|---|
| committer | dgp@users.sourceforge.net <dgp> | 2014-12-17 19:57:40 (GMT) |
| commit | a81c98188f95b97892bbf47a4bc2eaa58869b15c (patch) | |
| tree | 5890482ba27b9156b56aec4c155eb37dd3d21fc8 /generic/tclEncoding.c | |
| parent | 8562c5502a00b517f6da5638b014ea42d77f14c8 (diff) | |
| download | tcl-a81c98188f95b97892bbf47a4bc2eaa58869b15c.zip tcl-a81c98188f95b97892bbf47a4bc2eaa58869b15c.tar.gz tcl-a81c98188f95b97892bbf47a4bc2eaa58869b15c.tar.bz2 | |
Revise encoding finalization so that it does a more complete job of restoring
the pre-initialized state. This makes finalization errors more repeatable
and cross-platform.
Diffstat (limited to 'generic/tclEncoding.c')
| -rw-r--r-- | generic/tclEncoding.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/generic/tclEncoding.c b/generic/tclEncoding.c index d246cb2..95c59c0 100644 --- a/generic/tclEncoding.c +++ b/generic/tclEncoding.c @@ -180,9 +180,9 @@ TCL_DECLARE_MUTEX(encodingMutex) * the system encoding will be used to perform the conversion. */ -static Tcl_Encoding defaultEncoding; -static Tcl_Encoding systemEncoding; -Tcl_Encoding tclIdentityEncoding; +static Tcl_Encoding defaultEncoding = NULL; +static Tcl_Encoding systemEncoding = NULL; +Tcl_Encoding tclIdentityEncoding = NULL; /* * The following variable is used in the sparse matrix code for a @@ -652,7 +652,10 @@ TclFinalizeEncodingSubsystem(void) Tcl_MutexLock(&encodingMutex); encodingsInitialized = 0; FreeEncoding(systemEncoding); + systemEncoding = NULL; + defaultEncoding = NULL; FreeEncoding(tclIdentityEncoding); + tclIdentityEncoding = NULL; hPtr = Tcl_FirstHashEntry(&encodingTable, &search); while (hPtr != NULL) { @@ -2960,7 +2963,9 @@ TableFreeProc( */ ckfree(dataPtr->toUnicode); + dataPtr->toUnicode = NULL; ckfree(dataPtr->fromUnicode); + dataPtr->fromUnicode = NULL; ckfree(dataPtr); } @@ -3433,6 +3438,7 @@ EscapeFreeProc( subTablePtr = dataPtr->subTables; for (i = 0; i < dataPtr->numSubTables; i++) { FreeEncoding((Tcl_Encoding) subTablePtr->encodingPtr); + subTablePtr->encodingPtr = NULL; subTablePtr++; } } |
