string test_s138 array T_nextFree108 integer T_firstFree798 integer T_maxIndex161 array T_typeId124 integer wurst_stack_depth320 array wurst_stack165 string test_s138 = "" integer T_firstFree798 = 0 integer T_maxIndex161 = 0 integer wurst_stack_depth320 = 0 function initGlobals137() { } function main159() { initGlobals137(); wurst_stack_165[wurst_stack_depth_320] = "when calling init_test in ondestroy_dynamicdispatchFrotty3, line 1"; wurst_stack_depth_320 = (wurst_stack_depth_320 + 1); test_s_138 = ""; dispatch_T_destroyT180(new_A373("when calling new_A in ondestroy_dynamicdispatchFrotty3, line 15"), "when calling dispatch_T_destroyT in ondestroy_dynamicdispatchFrotty3, line 16"); if (test_s_138 == "C") { testSuccess145(); } else { }; wurst_stack_depth_320 = (wurst_stack_depth_320 - 1); } function config876() { } IS_NATIVE function testSuccess145() { } function new_A373(string __wurst_stackPos210) returns integer { local integer this104 wurst_stack_165[wurst_stack_depth_320] = __wurst_stackPos_210; wurst_stack_depth_320 = (wurst_stack_depth_320 + 1); wurst_stack_165[wurst_stack_depth_320] = "when calling alloc_A in ondestroy_dynamicdispatchFrotty3, line 7"; wurst_stack_depth_320 = (wurst_stack_depth_320 + 1); if (T_firstFree_798 == 0) { if (T_maxIndex_161 < 32768) { T_maxIndex_161 = (T_maxIndex_161 + 1); this_104 = T_maxIndex_161; T_typeId_124[this_104] = 2; } else { error135("Out of memory: Could not create A.", "when calling error in ondestroy_dynamicdispatchFrotty3, line 7"); this_104 = 0; }; } else { T_firstFree_798 = (T_firstFree_798 - 1); this_104 = T_nextFree_108[T_firstFree_798]; T_typeId_124[this_104] = 2; }; wurst_stack_depth_320 = ((wurst_stack_depth_320 - 1) - 1); return this_104; } function error135(string msg156, string __wurst_stackPos432) { local integer stacktraceIndex757 local integer stacktraceLimit963 wurst_stack_165[wurst_stack_depth_320] = __wurst_stackPos_432; wurst_stack_depth_320 = (wurst_stack_depth_320 + 1); __wurst_stackPos_432 = ""; stacktraceIndex_757 = wurst_stack_depth_320; stacktraceLimit_963 = 0; loop { stacktraceIndex_757 = (stacktraceIndex_757 - 1); stacktraceLimit_963 = (stacktraceLimit_963 + 1); exitwhen ((stacktraceLimit_963 > 20) or (stacktraceIndex_757 < 0)); __wurst_stackPos_432 = (__wurst_stackPos_432 + (" " + wurst_stack_165[stacktraceIndex_757])); }; $debugPrint146((msg_156 + (" " + __wurst_stackPos_432))); wurst_stack_depth_320 = (wurst_stack_depth_320 - 1); } function dispatch_T_destroyT180(integer this828, string __wurst_stackPos299) { wurst_stack_165[wurst_stack_depth_320] = __wurst_stackPos_299; wurst_stack_depth_320 = (wurst_stack_depth_320 + 1); if (T_typeId_124[this_828] == 0) { if (this_828 == 0) { error135("Nullpointer exception when calling T.T", "when calling error in ondestroy_dynamicdispatchFrotty3, line 11"); } else { error135("Called T.T on invalid object.", "when calling error in ondestroy_dynamicdispatchFrotty3, line 11"); }; } else { }; if (T_typeId_124[this_828] <= 3) { if (T_typeId_124[this_828] <= 2) { wurst_stack_165[wurst_stack_depth_320] = "when calling destroyA in ondestroy_dynamicdispatchFrotty3, line 11"; wurst_stack_depth_320 = (wurst_stack_depth_320 + 1); test_s_138 = (test_s_138 + "C"); wurst_stack_165[wurst_stack_depth_320] = "when calling dealloc_A in ondestroy_dynamicdispatchFrotty3, line 7"; wurst_stack_depth_320 = (wurst_stack_depth_320 + 1); if (T_typeId_124[this_828] == 0) { error135("Double free: object of type A", "when calling error in ondestroy_dynamicdispatchFrotty3, line 7"); } else { T_nextFree_108[T_firstFree_798] = this_828; T_firstFree_798 = (T_firstFree_798 + 1); T_typeId_124[this_828] = 0; }; wurst_stack_depth_320 = ((wurst_stack_depth_320 - 1) - 1); } else { wurst_stack_165[wurst_stack_depth_320] = "when calling destroyB in ondestroy_dynamicdispatchFrotty3, line 11"; wurst_stack_depth_320 = (wurst_stack_depth_320 + 1); test_s_138 = ((test_s_138 + "B") + "C"); wurst_stack_165[wurst_stack_depth_320] = "when calling dealloc_B in ondestroy_dynamicdispatchFrotty3, line 9"; wurst_stack_depth_320 = (wurst_stack_depth_320 + 1); if (T_typeId_124[this_828] == 0) { error135("Double free: object of type B", "when calling error in ondestroy_dynamicdispatchFrotty3, line 8"); } else { T_nextFree_108[T_firstFree_798] = this_828; T_firstFree_798 = (T_firstFree_798 + 1); T_typeId_124[this_828] = 0; }; wurst_stack_depth_320 = ((wurst_stack_depth_320 - 1) - 1); }; } else { wurst_stack_165[wurst_stack_depth_320] = "when calling destroyT in ondestroy_dynamicdispatchFrotty3, line 11"; wurst_stack_depth_320 = (wurst_stack_depth_320 + 1); wurst_stack_165[wurst_stack_depth_320] = "when calling dealloc_T in ondestroy_dynamicdispatchFrotty3, line 11"; wurst_stack_depth_320 = (wurst_stack_depth_320 + 1); if (T_typeId_124[this_828] == 0) { error135("Double free: object of type T", "when calling error in ondestroy_dynamicdispatchFrotty3, line 11"); } else { T_nextFree_108[T_firstFree_798] = this_828; T_firstFree_798 = (T_firstFree_798 + 1); T_typeId_124[this_828] = 0; }; wurst_stack_depth_320 = ((wurst_stack_depth_320 - 1) - 1); }; wurst_stack_depth_320 = (wurst_stack_depth_320 - 1); }