freebsd-ports/lang/libobjc2/files/patch-arc.m
David Chisnall 257af15518 Backport bug fix from r37605 upstream. This fixes crashing when
Objective-C++ programs use Objective-C types in static constructors.

Approved by:	bapt (mentor)
2014-01-15 19:10:16 +00:00

30 lines
1.6 KiB
Objective-C

--- ./arc.m.orig 2013-03-12 08:51:59.000000000 +0000
+++ ./arc.m 2014-01-13 15:04:54.000000000 +0000
@@ -219,15 +219,18 @@
}
else
{
- [AutoreleasePool class];
- useARCAutoreleasePool = class_respondsToSelector(AutoreleasePool,
- SELECTOR(_ARCCompatibleAutoreleasePool));
- NewAutoreleasePool = class_getMethodImplementation(object_getClass(AutoreleasePool),
- SELECTOR(new));
- DeleteAutoreleasePool = class_getMethodImplementation(AutoreleasePool,
- SELECTOR(release));
- AutoreleaseAdd = class_getMethodImplementation(object_getClass(AutoreleasePool),
- SELECTOR(addObject:));
+ useARCAutoreleasePool = (0 != class_getInstanceMethod(AutoreleasePool,
+ SELECTOR(_ARCCompatibleAutoreleasePool)));
+ if (!useARCAutoreleasePool)
+ {
+ [AutoreleasePool class];
+ NewAutoreleasePool = class_getMethodImplementation(object_getClass(AutoreleasePool),
+ SELECTOR(new));
+ DeleteAutoreleasePool = class_getMethodImplementation(AutoreleasePool,
+ SELECTOR(release));
+ AutoreleaseAdd = class_getMethodImplementation(object_getClass(AutoreleasePool),
+ SELECTOR(addObject:));
+ }
}
}
}