/* SRC: classes/splobjectstorage.php line 140 */ void c_SplObjectStorage::t_detach(CVarRef v_obj) { INSTANCE_METHOD_INJECTION_BUILTIN(SplObjectStorage, SplObjectStorage::detach); Primitive v_idx = 0; Variant v_object; ObjectData *obj_tmp UNUSED; if (x_is_object(v_obj)) { { { LOOP_COUNTER(1); Variant map2 = m_storage; for (ArrayIter iter3 = map2.begin(s_class_name); !iter3.end(); iter3.next()) { LOOP_COUNTER_CHECK(1); iter3.second(v_object); v_idx.assignVal(iter3.first()); { if (same(v_object, v_obj)) { { m_storage.weakRemove(v_idx); { MethodCallPackage mcp0; mcp0.methodCall((GET_THIS_VALID()), NAMSTR(s_sys_ss941ca25f, "rewind"), 0x1670096FDE27AF6ALL); const CallInfo *cit0 ATTRIBUTE_UNUSED = mcp0.ci; (mcp0.bindClass(fi)->getMeth0Args())(mcp0, 0); } return; } } } } } } } }
/* SRC: classes/splobjectstorage.php line 140 */ void c_SplObjectStorage::t_detach(CVarRef v_obj) { INSTANCE_METHOD_INJECTION_BUILTIN(SplObjectStorage, SplObjectStorage::detach); Primitive v_idx = 0; Variant v_object; ObjectData *obj_tmp UNUSED; if (x_is_object(v_obj)) { { { LOOP_COUNTER(1); ArrayIter iter3; { Variant map2 = m_storage; iter3.begin(map2, s_class_name); try { if (iter3.end()) goto break1; } catch (...) { iter3.reset(); throw; } } do { LOOP_COUNTER_CHECK(1); iter3.second(v_object); v_idx.assignVal(iter3.first()); { if (same(v_object, v_obj)) { { m_storage.weakRemove(v_idx); { MethodCallPackage mcp0; mcp0.methodCall((GET_THIS_VALID()), NAMSTR(s_sys_ss745e29f6, "rewind"), 0x4D5C8831); const CallInfo *cit0 ATTRIBUTE_UNUSED = mcp0.ci; (mcp0.bindClass(fi)->getMeth0Args())(mcp0, 0); } return; } } } } while(iter3.next(), !iter3.end()); break1:; } } } }