svn commit: r339807 - in head/lang/libobjc2: . files
David Chisnall
theraven at FreeBSD.org
Wed Jan 15 19:10:17 UTC 2014
Author: theraven
Date: Wed Jan 15 19:10:16 2014
New Revision: 339807
URL: http://svnweb.freebsd.org/changeset/ports/339807
QAT: https://qat.redports.org/buildarchive/r339807/
Log:
Backport bug fix from r37605 upstream. This fixes crashing when
Objective-C++ programs use Objective-C types in static constructors.
Approved by: bapt (mentor)
Added:
head/lang/libobjc2/files/
head/lang/libobjc2/files/patch-arc.m (contents, props changed)
Modified:
head/lang/libobjc2/Makefile
Modified: head/lang/libobjc2/Makefile
==============================================================================
--- head/lang/libobjc2/Makefile Wed Jan 15 19:00:14 2014 (r339806)
+++ head/lang/libobjc2/Makefile Wed Jan 15 19:10:16 2014 (r339807)
@@ -3,6 +3,7 @@
PORTNAME= libobjc2
PORTVERSION= 1.7
+PORTREVISION= 1
CATEGORIES= lang devel gnustep
MASTER_SITES= http://download.gna.org/gnustep/
Added: head/lang/libobjc2/files/patch-arc.m
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/lang/libobjc2/files/patch-arc.m Wed Jan 15 19:10:16 2014 (r339807)
@@ -0,0 +1,30 @@
+--- ./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:));
++ }
+ }
+ }
+ }
More information about the svn-ports-all
mailing list