summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--generic/tclBasic.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/generic/tclBasic.c b/generic/tclBasic.c
index 2735abc..63bc4b8 100644
--- a/generic/tclBasic.c
+++ b/generic/tclBasic.c
@@ -431,6 +431,14 @@ TclFinalizeEvaluation(void)
*----------------------------------------------------------------------
*/
+/* Template for internal Interp structure: the stubTable entry cannot move! */
+typedef struct {
+ char *dumm1;
+ Tcl_FreeProc *dummy2;
+ int dummy3;
+ const struct TclStubs *stubTable;
+} InterpTemplate;
+
Tcl_Interp *
Tcl_CreateInterp(void)
{
@@ -466,6 +474,21 @@ Tcl_CreateInterp(void)
/*NOTREACHED*/
Tcl_Panic("Tcl_CallFrame must not be smaller than CallFrame");
}
+ if ((void *) tclStubs.tcl_SetObjResult
+ != (void *)((&(tclStubs.tcl_PkgProvideEx))[235])) {
+ /*NOTREACHED*/
+ Tcl_Panic("Tcl_SetObjResult entry in the stub table must be kept");
+ }
+ if ((void *) tclStubs.tcl_NewStringObj
+ != (void *)((&(tclStubs.tcl_PkgProvideEx))[56])) {
+ /*NOTREACHED*/
+ Tcl_Panic("Tcl_NewStringObj entry in the stub table must be kept");
+ }
+ if (offsetof(InterpTemplate, stubTable)
+ != offsetof(Interp, stubTable)) {
+ /*NOTREACHED*/
+ Tcl_Panic("stubsTable entry in the Interp structure must be kept");
+ }
if (cancelTableInitialized == 0) {
Tcl_MutexLock(&cancelLock);