Clone
Gustaf Neumann <neumann@wu-wien.ac.at>
committed
on 10 Jul 18
Fix buggy case when blueprints are used to update interpreters with preexisting objects and classes. There, it was possible that objects are… Show more
Fix buggy case when blueprints are used to update interpreters with preexisting objects and classes. There, it was possible that objects are turned into baseclass objects, when the application classes are deleted.

Show less

2.2 + 20 more
generic/nsfStack.c (+2 -2)
120 120   /* framePtr = (Tcl_CallFrame *)Tcl_Interp_varFramePtr(interp);
121 121     for (; framePtr != NULL; framePtr = Tcl_CallFrame_callerPtr(framePtr)) {
122 122     fprintf(stderr, "... frame %p flags %.6x cd %p objv[0] %s\n",
123 123             framePtr, Tcl_CallFrame_isProcCallFrame(framePtr),
124 124             Tcl_CallFrame_clientData(framePtr),
125 125             Tcl_CallFrame_objc(framePtr) ? ObjStr(Tcl_CallFrame_objv(framePtr)[0]) : "(null)");
126 126             }*/
127 127   framePtr = (Tcl_CallFrame *)Tcl_Interp_framePtr(interp);
128 128   fprintf(stderr, "...         varFrame  flags       clientData lvl               ns\n");
129 129   for (; framePtr != NULL; framePtr = Tcl_CallFrame_callerPtr(framePtr)) {
130 130     unsigned int frameFlags = (unsigned int)Tcl_CallFrame_isProcCallFrame(framePtr);
131 131     NsfCallStackContent *cscPtr =
132 132       (frameFlags & (FRAME_IS_NSF_METHOD|FRAME_IS_NSF_CMETHOD)) ?
133 133       ((NsfCallStackContent *)Tcl_CallFrame_clientData(framePtr)) : NULL;
134 134
135 135     fprintf(stderr, "... %16p %.6x %16p %3d %16p %s ov %s %d",
136 136             (void *)framePtr, frameFlags,
137 137             Tcl_CallFrame_clientData(framePtr),
138 138             Tcl_CallFrame_level(framePtr),
139 139             (void *)Tcl_CallFrame_nsPtr(framePtr), Tcl_CallFrame_nsPtr(framePtr)->fullName,
140               Tcl_CallFrame_objc(framePtr) && 0 ? ObjStr(Tcl_CallFrame_objv(framePtr)[0]) : "(null)",
141               Tcl_CallFrame_objc(framePtr) ? Tcl_CallFrame_objc(framePtr) : -1);
  140             Tcl_CallFrame_objc(framePtr) > 0 ? ObjStr(Tcl_CallFrame_objv(framePtr)[0]) : "(null)",
  141             Tcl_CallFrame_objc(framePtr) > 0 ? Tcl_CallFrame_objc(framePtr) : -1);
142 142     if (cscPtr != NULL) {
143 143       fprintf(stderr, " csc %p frameType %.4x flags %.6x (%s.%p %s)\n",
144 144               (void *)cscPtr,
145 145               cscPtr->frameType,
146 146               cscPtr->flags,
147 147               ObjectName(cscPtr->self),
148 148               (void *)cscPtr->cmdPtr,
149 149               Tcl_GetCommandName(interp, cscPtr->cmdPtr));
150 150     } else {
151 151       fprintf(stderr, " no csc");
152 152       if (frameFlags & FRAME_IS_NSF_OBJECT) {
153 153         NsfObject *object = (NsfObject *)Tcl_CallFrame_clientData(framePtr);
154 154         fprintf(stderr, " obj %p %s", (void *)object, ObjectName(object));
155 155       }
156 156       fprintf(stderr, "\n");
157 157     }
158 158   }
159 159 }
160 160
161 161 /*