Skip to content

Commit ff9b037

Browse files
committed
Fix Darwin GCC cached IMP patching for GSArray
1 parent 21b1a3c commit ff9b037

1 file changed

Lines changed: 16 additions & 0 deletions

File tree

build_osx.sh

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,7 @@ reset_patch_targets() {
176176
Tools/plutil.m \
177177
Tools/sfparse.m \
178178
Tools/xmlparse.m \
179+
Source/GSArray.m \
179180
Source/GSString.m \
180181
Source/NSArray.m \
181182
Source/GSDictionary.m \
@@ -307,6 +308,15 @@ patch_nsarray_cached_imp_for_darwin_gcc() {
307308
perl -0pi -e 's/IMP(\s+)add(\s*=\s*\[self\s+methodForSelector:\s*addSel\];)/void (*add)(id, SEL, id)$2/g' "$array"
308309
}
309310

311+
patch_gsarray_cached_imp_for_darwin_gcc() {
312+
local array="$SRCROOT/libs-base/Source/GSArray.m"
313+
if [[ ! -f "$array" ]]; then
314+
return
315+
fi
316+
317+
perl -0pi -e 's/IMP(\s+)get1(\s*=\s*\[otherArray\s+methodForSelector:\s*oaiSel\];)/id (*get1)(id, SEL, NSUInteger)$2/g' "$array"
318+
}
319+
310320
patch_gsdictionary_cached_imp_for_darwin_gcc() {
311321
local dict="$SRCROOT/libs-base/Source/GSDictionary.m"
312322
if [[ ! -f "$dict" ]]; then
@@ -378,6 +388,11 @@ patch_nsserializer_cached_imp_for_darwin_gcc() {
378388

379389
perl -0pi -e 's/IMP(\s+)nxtImp;/id (*nxtImp)(id, SEL);/g' "$serializer"
380390
perl -0pi -e 's/IMP(\s+)objImp;/id (*objImp)(id, SEL, id);/g' "$serializer"
391+
perl -0pi -e 's/static IMP dInitImp;/static id (*dInitImp)(id, SEL, void *, NSUInteger);/g' "$serializer"
392+
perl -0pi -e 's/static IMP maInitImp;/static id (*maInitImp)(id, SEL, NSUInteger);/g' "$serializer"
393+
perl -0pi -e 's/static IMP mdInitImp;/static id (*mdInitImp)(id, SEL, NSUInteger);/g' "$serializer"
394+
perl -0pi -e 's/static IMP maAddImp;/static void (*maAddImp)(id, SEL, id);/g' "$serializer"
395+
perl -0pi -e 's/static IMP mdSetImp;/static void (*mdSetImp)(id, SEL, id, id);/g' "$serializer"
381396
}
382397

383398
# patch_nsobject_for_gnu_runtime
@@ -600,6 +615,7 @@ patch_libs_base_for_darwin_gcc
600615
patch_gdomap_for_modern_sdk
601616
patch_small_objects_for_gnu_runtime
602617
patch_nsarray_cached_imp_for_darwin_gcc
618+
patch_gsarray_cached_imp_for_darwin_gcc
603619
patch_gsdictionary_cached_imp_for_darwin_gcc
604620
patch_nsdictionary_cached_imp_for_darwin_gcc
605621
patch_nsuserdefaults_cached_imp_for_darwin_gcc

0 commit comments

Comments
 (0)