string test_s516 array T_nextFree187 integer T_firstFree544 integer T_maxIndex232 array T_typeId109 integer wurst_stack_depth296 array wurst_stack383 string test_s516 = "" integer T_firstFree544 = 0 integer T_maxIndex232 = 0 integer wurst_stack_depth296 = 0 function initGlobals893() { } function main447() { initGlobals893(); wurst_stack_383[wurst_stack_depth_296] = "when calling init_test in ondestroy_dynamicdispatchFrotty2, line 1"; wurst_stack_depth_296 = (wurst_stack_depth_296 + 1); test_s_516 = ""; dispatch_T_destroyT199(new_A286("when calling new_A in ondestroy_dynamicdispatchFrotty2, line 12"), "when calling dispatch_T_destroyT in ondestroy_dynamicdispatchFrotty2, line 13"); if (test_s_516 == "") { testSuccess136(); } else { }; wurst_stack_depth_296 = (wurst_stack_depth_296 - 1); } function config526() { } IS_NATIVE function testSuccess136() { } function new_A286(string __wurst_stackPos156) returns integer { local integer this142 wurst_stack_383[wurst_stack_depth_296] = __wurst_stackPos_156; wurst_stack_depth_296 = (wurst_stack_depth_296 + 1); wurst_stack_383[wurst_stack_depth_296] = "when calling alloc_A in ondestroy_dynamicdispatchFrotty2, line 4"; wurst_stack_depth_296 = (wurst_stack_depth_296 + 1); if (T_firstFree_544 == 0) { if (T_maxIndex_232 < 32768) { T_maxIndex_232 = (T_maxIndex_232 + 1); this_142 = T_maxIndex_232; T_typeId_109[this_142] = 2; } else { error213("Out of memory: Could not create A.", "when calling error in ondestroy_dynamicdispatchFrotty2, line 4"); this_142 = 0; }; } else { T_firstFree_544 = (T_firstFree_544 - 1); this_142 = T_nextFree_187[T_firstFree_544]; T_typeId_109[this_142] = 2; }; wurst_stack_depth_296 = ((wurst_stack_depth_296 - 1) - 1); return this_142; } function error213(string msg160, string __wurst_stackPos395) { local integer stacktraceIndex328 local integer stacktraceLimit802 wurst_stack_383[wurst_stack_depth_296] = __wurst_stackPos_395; wurst_stack_depth_296 = (wurst_stack_depth_296 + 1); __wurst_stackPos_395 = ""; stacktraceIndex_328 = wurst_stack_depth_296; stacktraceLimit_802 = 0; loop { stacktraceIndex_328 = (stacktraceIndex_328 - 1); stacktraceLimit_802 = (stacktraceLimit_802 + 1); exitwhen ((stacktraceLimit_802 > 20) or (stacktraceIndex_328 < 0)); __wurst_stackPos_395 = (__wurst_stackPos_395 + (" " + wurst_stack_383[stacktraceIndex_328])); }; $debugPrint115((msg_160 + (" " + __wurst_stackPos_395))); wurst_stack_depth_296 = (wurst_stack_depth_296 - 1); } function dispatch_T_destroyT199(integer this126, string __wurst_stackPos550) { wurst_stack_383[wurst_stack_depth_296] = __wurst_stackPos_550; wurst_stack_depth_296 = (wurst_stack_depth_296 + 1); if (T_typeId_109[this_126] == 0) { if (this_126 == 0) { error213("Nullpointer exception when calling T.T", "when calling error in ondestroy_dynamicdispatchFrotty2, line 8"); } else { error213("Called T.T on invalid object.", "when calling error in ondestroy_dynamicdispatchFrotty2, line 8"); }; } else { }; if (T_typeId_109[this_126] <= 2) { if (T_typeId_109[this_126] <= 1) { wurst_stack_383[wurst_stack_depth_296] = "when calling destroyT in ondestroy_dynamicdispatchFrotty2, line 8"; wurst_stack_depth_296 = (wurst_stack_depth_296 + 1); wurst_stack_383[wurst_stack_depth_296] = "when calling dealloc_T in ondestroy_dynamicdispatchFrotty2, line 8"; wurst_stack_depth_296 = (wurst_stack_depth_296 + 1); if (T_typeId_109[this_126] == 0) { error213("Double free: object of type T", "when calling error in ondestroy_dynamicdispatchFrotty2, line 8"); } else { T_nextFree_187[T_firstFree_544] = this_126; T_firstFree_544 = (T_firstFree_544 + 1); T_typeId_109[this_126] = 0; }; wurst_stack_depth_296 = ((wurst_stack_depth_296 - 1) - 1); } else { wurst_stack_383[wurst_stack_depth_296] = "when calling destroyA in ondestroy_dynamicdispatchFrotty2, line 8"; wurst_stack_depth_296 = (wurst_stack_depth_296 + 1); wurst_stack_383[wurst_stack_depth_296] = "when calling dealloc_A in ondestroy_dynamicdispatchFrotty2, line 4"; wurst_stack_depth_296 = (wurst_stack_depth_296 + 1); if (T_typeId_109[this_126] == 0) { error213("Double free: object of type A", "when calling error in ondestroy_dynamicdispatchFrotty2, line 4"); } else { T_nextFree_187[T_firstFree_544] = this_126; T_firstFree_544 = (T_firstFree_544 + 1); T_typeId_109[this_126] = 0; }; wurst_stack_depth_296 = ((wurst_stack_depth_296 - 1) - 1); }; } else { wurst_stack_383[wurst_stack_depth_296] = "when calling destroyB in ondestroy_dynamicdispatchFrotty2, line 8"; wurst_stack_depth_296 = (wurst_stack_depth_296 + 1); test_s_516 = (test_s_516 + "B"); wurst_stack_383[wurst_stack_depth_296] = "when calling dealloc_B in ondestroy_dynamicdispatchFrotty2, line 6"; wurst_stack_depth_296 = (wurst_stack_depth_296 + 1); if (T_typeId_109[this_126] == 0) { error213("Double free: object of type B", "when calling error in ondestroy_dynamicdispatchFrotty2, line 5"); } else { T_nextFree_187[T_firstFree_544] = this_126; T_firstFree_544 = (T_firstFree_544 + 1); T_typeId_109[this_126] = 0; }; wurst_stack_depth_296 = ((wurst_stack_depth_296 - 1) - 1); }; wurst_stack_depth_296 = (wurst_stack_depth_296 - 1); }