summaryrefslogtreecommitdiffstats
path: root/generic/tclStubLib.c
diff options
context:
space:
mode:
authorjenglish <jenglish@noemail.net>2005-11-20 18:33:16 (GMT)
committerjenglish <jenglish@noemail.net>2005-11-20 18:33:16 (GMT)
commitfac36caa657e99cd7a093eb5c4db2bb94735d84d (patch)
tree17e3ec3f8a7d4b729da085b559e7fee0aed8f1ee /generic/tclStubLib.c
parent0d59278aa08f9786372de6a18316a2da9c2c5a1a (diff)
downloadtcl-fac36caa657e99cd7a093eb5c4db2bb94735d84d.zip
tcl-fac36caa657e99cd7a093eb5c4db2bb94735d84d.tar.gz
tcl-fac36caa657e99cd7a093eb5c4db2bb94735d84d.tar.bz2
Don't set tclStubsPtr to 0 when Tcl_PkgRequireEx() fails
[Fix for #1091431 "Tcl_InitStubs failure crashes wish"] FossilOrigin-Name: 281147cb608db9ac6963b8a7237b0cf011aa78d7
Diffstat (limited to 'generic/tclStubLib.c')
-rw-r--r--generic/tclStubLib.c28
1 files changed, 4 insertions, 24 deletions
diff --git a/generic/tclStubLib.c b/generic/tclStubLib.c
index 369a73a..98b3255 100644
--- a/generic/tclStubLib.c
+++ b/generic/tclStubLib.c
@@ -10,7 +10,7 @@
* See the file "license.terms" for information on usage and redistribution of
* this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tclStubLib.c,v 1.9 2005/11/02 14:51:05 dkf Exp $
+ * RCS: @(#) $Id: tclStubLib.c,v 1.10 2005/11/20 18:33:17 jenglish Exp $
*/
/*
@@ -32,16 +32,11 @@
* functions should be built as non-exported symbols.
*/
-#undef TCL_STORAGE_CLASS
-#define TCL_STORAGE_CLASS DLLEXPORT
-
TclStubs *tclStubsPtr = NULL;
TclPlatStubs *tclPlatStubsPtr = NULL;
TclIntStubs *tclIntStubsPtr = NULL;
TclIntPlatStubs *tclIntPlatStubsPtr = NULL;
-static TclStubs * HasStubSupport(Tcl_Interp *interp);
-
static TclStubs *
HasStubSupport(
Tcl_Interp *interp)
@@ -87,8 +82,7 @@ Tcl_InitStubs(
int exact)
{
CONST char *actualVersion = NULL;
- TclStubs *tmp;
- TclStubs **tmpp;
+ ClientData pkgData = NULL;
/*
* We can't optimize this check by caching tclStubsPtr because that
@@ -101,17 +95,11 @@ Tcl_InitStubs(
return NULL;
}
- /*
- * This is needed to satisfy GCC 3.3's strict aliasing rules.
- */
-
- tmpp = &tmp;
- actualVersion = Tcl_PkgRequireEx(interp, "Tcl", version, exact,
- (ClientData *) tmpp);
+ actualVersion = Tcl_PkgRequireEx(interp, "Tcl", version, exact, &pkgData);
if (actualVersion == NULL) {
- tclStubsPtr = NULL;
return NULL;
}
+ tclStubsPtr = (TclStubs*)pkgData;
if (tclStubsPtr->hooks) {
tclPlatStubsPtr = tclStubsPtr->hooks->tclPlatStubs;
@@ -125,11 +113,3 @@ Tcl_InitStubs(
return actualVersion;
}
-
-/*
- * Local Variables:
- * mode: c
- * c-basic-offset: 4
- * fill-column: 78
- * End:
- */