Date: Wed, 15 Jan 2014 19:10:16 +0000 (UTC) From: David Chisnall <theraven@FreeBSD.org> To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r339807 - in head/lang/libobjc2: . files Message-ID: <201401151910.s0FJAG8B078943@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
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:)); ++ } + } + } + }
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201401151910.s0FJAG8B078943>