diff options
| -rw-r--r-- | objectivec/objc.cpp | 11 | ||||
| -rw-r--r-- | view/sharedcache/core/ObjC.cpp | 8 |
2 files changed, 14 insertions, 5 deletions
diff --git a/objectivec/objc.cpp b/objectivec/objc.cpp index 4c574600..e4b21ff6 100644 --- a/objectivec/objc.cpp +++ b/objectivec/objc.cpp @@ -838,9 +838,14 @@ void ObjCProcessor::LoadProtocols(ObjCReader* reader, Ref<Section> 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 dc3012a5..b6de8ba6 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 { |
