diff --git a/objectivec/objc.cpp b/objectivec/objc.cpp index 4c574600fd..e4b21ff614 100644 --- a/objectivec/objc.cpp +++ b/objectivec/objc.cpp @@ -838,9 +838,14 @@ void ObjCProcessor::LoadProtocols(ObjCReader* reader, Ref
listSection) void ObjCProcessor::GetRelativeMethod(ObjCReader* reader, method_t& meth) { - meth.name = reader->GetOffset() + reader->ReadS32(); - meth.types = reader->GetOffset() + reader->ReadS32(); - meth.imp = reader->GetOffset() + reader->ReadS32(); + uint64_t offset = reader->GetOffset(); + meth.name = offset + reader->ReadS32(); + + offset += sizeof(int32_t); + meth.types = offset + reader->ReadS32(); + + offset += sizeof(int32_t); + meth.imp = offset + reader->ReadS32(); } void ObjCProcessor::ReadListOfMethodLists(ObjCReader* reader, ClassBase& cls, std::string_view name, view_ptr_t start) diff --git a/view/sharedcache/core/ObjC.cpp b/view/sharedcache/core/ObjC.cpp index dc3012a5ce..b6de8ba6c0 100644 --- a/view/sharedcache/core/ObjC.cpp +++ b/view/sharedcache/core/ObjC.cpp @@ -97,8 +97,12 @@ void SharedCacheObjCProcessor::GetRelativeMethod(ObjCReader* reader, method_t& m if (m_customRelativeMethodSelectorBase.has_value()) { meth.name = m_customRelativeMethodSelectorBase.value() + reader->ReadS32(); - meth.types = reader->GetOffset() + reader->ReadS32(); - meth.imp = reader->GetOffset() + reader->ReadS32(); + + uint64_t offset = reader->GetOffset(); + meth.types = offset + reader->ReadS32(); + + offset += sizeof(int32_t); + meth.imp = offset + reader->ReadS32(); } else {