string test_s929 array T_nextFree159 integer T_firstFree198 integer T_maxIndex314 array T_typeId112 integer wurst_stack_depth146 array wurst_stack144 string test_s929 = "" integer T_firstFree198 = 0 integer T_maxIndex314 = 0 integer wurst_stack_depth146 = 0 function initGlobals120() { } function main325() { initGlobals120(); wurst_stack_144[wurst_stack_depth_146] = "when calling init_test in ondestroy_dynamicdispatchFrotty2, line 1"; wurst_stack_depth_146 = (wurst_stack_depth_146 + 1); test_s_929 = ""; dispatch_T_destroyT724(new_A179("when calling new_A in ondestroy_dynamicdispatchFrotty2, line 12"), "when calling dispatch_T_destroyT in ondestroy_dynamicdispatchFrotty2, line 13"); if (test_s_929 == "") { testSuccess210(); } else { }; wurst_stack_depth_146 = (wurst_stack_depth_146 - 1); } function config994() { } IS_NATIVE function testSuccess210() { } function new_A179(string __wurst_stackPos202) returns integer { local integer this152 wurst_stack_144[wurst_stack_depth_146] = __wurst_stackPos_202; wurst_stack_depth_146 = (wurst_stack_depth_146 + 1); wurst_stack_144[wurst_stack_depth_146] = "when calling alloc_A in ondestroy_dynamicdispatchFrotty2, line 4"; wurst_stack_depth_146 = (wurst_stack_depth_146 + 1); if (T_firstFree_198 == 0) { if (T_maxIndex_314 < 32768) { T_maxIndex_314 = (T_maxIndex_314 + 1); this_152 = T_maxIndex_314; T_typeId_112[this_152] = 2; } else { error889("Out of memory: Could not create A.", "when calling error in ondestroy_dynamicdispatchFrotty2, line 4"); this_152 = 0; }; } else { T_firstFree_198 = (T_firstFree_198 - 1); this_152 = T_nextFree_159[T_firstFree_198]; T_typeId_112[this_152] = 2; }; wurst_stack_depth_146 = ((wurst_stack_depth_146 - 1) - 1); return this_152; } function error889(string msg883, string __wurst_stackPos854) { local integer stacktraceIndex460 local integer stacktraceLimit383 wurst_stack_144[wurst_stack_depth_146] = __wurst_stackPos_854; wurst_stack_depth_146 = (wurst_stack_depth_146 + 1); __wurst_stackPos_854 = ""; stacktraceIndex_460 = wurst_stack_depth_146; stacktraceLimit_383 = 0; loop { stacktraceIndex_460 = (stacktraceIndex_460 - 1); stacktraceLimit_383 = (stacktraceLimit_383 + 1); exitwhen ((stacktraceLimit_383 > 20) or (stacktraceIndex_460 < 0)); __wurst_stackPos_854 = (__wurst_stackPos_854 + (" " + wurst_stack_144[stacktraceIndex_460])); }; $debugPrint185((msg_883 + (" " + __wurst_stackPos_854))); wurst_stack_depth_146 = (wurst_stack_depth_146 - 1); } function dispatch_T_destroyT724(integer this206, string __wurst_stackPos209) { wurst_stack_144[wurst_stack_depth_146] = __wurst_stackPos_209; wurst_stack_depth_146 = (wurst_stack_depth_146 + 1); if (T_typeId_112[this_206] == 0) { if (this_206 == 0) { error889("Nullpointer exception when calling T.T", "when calling error in ondestroy_dynamicdispatchFrotty2, line 8"); } else { error889("Called T.T on invalid object.", "when calling error in ondestroy_dynamicdispatchFrotty2, line 8"); }; } else { }; if (T_typeId_112[this_206] <= 2) { if (T_typeId_112[this_206] <= 1) { wurst_stack_144[wurst_stack_depth_146] = "when calling destroyT in ondestroy_dynamicdispatchFrotty2, line 8"; wurst_stack_depth_146 = (wurst_stack_depth_146 + 1); wurst_stack_144[wurst_stack_depth_146] = "when calling dealloc_T in ondestroy_dynamicdispatchFrotty2, line 8"; wurst_stack_depth_146 = (wurst_stack_depth_146 + 1); if (T_typeId_112[this_206] == 0) { error889("Double free: object of type T", "when calling error in ondestroy_dynamicdispatchFrotty2, line 8"); } else { T_nextFree_159[T_firstFree_198] = this_206; T_firstFree_198 = (T_firstFree_198 + 1); T_typeId_112[this_206] = 0; }; wurst_stack_depth_146 = ((wurst_stack_depth_146 - 1) - 1); } else { wurst_stack_144[wurst_stack_depth_146] = "when calling destroyA in ondestroy_dynamicdispatchFrotty2, line 8"; wurst_stack_depth_146 = (wurst_stack_depth_146 + 1); wurst_stack_144[wurst_stack_depth_146] = "when calling dealloc_A in ondestroy_dynamicdispatchFrotty2, line 4"; wurst_stack_depth_146 = (wurst_stack_depth_146 + 1); if (T_typeId_112[this_206] == 0) { error889("Double free: object of type A", "when calling error in ondestroy_dynamicdispatchFrotty2, line 4"); } else { T_nextFree_159[T_firstFree_198] = this_206; T_firstFree_198 = (T_firstFree_198 + 1); T_typeId_112[this_206] = 0; }; wurst_stack_depth_146 = ((wurst_stack_depth_146 - 1) - 1); }; } else { wurst_stack_144[wurst_stack_depth_146] = "when calling destroyB in ondestroy_dynamicdispatchFrotty2, line 8"; wurst_stack_depth_146 = (wurst_stack_depth_146 + 1); test_s_929 = (test_s_929 + "B"); wurst_stack_144[wurst_stack_depth_146] = "when calling dealloc_B in ondestroy_dynamicdispatchFrotty2, line 6"; wurst_stack_depth_146 = (wurst_stack_depth_146 + 1); if (T_typeId_112[this_206] == 0) { error889("Double free: object of type B", "when calling error in ondestroy_dynamicdispatchFrotty2, line 5"); } else { T_nextFree_159[T_firstFree_198] = this_206; T_firstFree_198 = (T_firstFree_198 + 1); T_typeId_112[this_206] = 0; }; wurst_stack_depth_146 = ((wurst_stack_depth_146 - 1) - 1); }; wurst_stack_depth_146 = (wurst_stack_depth_146 - 1); }