Bob Ippolito avatar Bob Ippolito committed 80f0031

Fix for Mac OS X 10.2 strings

Comments (0)

Files changed (1)

Modules/objc/OC_PythonString.m

 
 -(id)__realObject__
 {
+	static int supportsNoCopy = -1;
+	if (supportsNoCopy == -1) {
+		supportsNoCopy = (int)[NSString instancesRespondToSelector:@selector(initWithBytesNoCopy:length:encoding:freeWhenDone:)];
+	}
 	if (!realObject) {
-		realObject = [[NSString alloc]
-			initWithBytesNoCopy:PyString_AS_STRING(value)
-						 length:(unsigned)PyString_GET_SIZE(value)
-					   encoding:[NSString defaultCStringEncoding]
-				   freeWhenDone:NO];
+		if (supportsNoCopy) {
+			// Mac OS X 10.3+
+			realObject = [[NSString alloc]
+				initWithBytesNoCopy:PyString_AS_STRING(value)
+							 length:(unsigned)PyString_GET_SIZE(value)
+						   encoding:[NSString defaultCStringEncoding]
+					   freeWhenDone:NO];
+		} else {
+			// Mac OS X 10.2
+			realObject = [[NSString alloc]
+			    initWithBytes:PyString_AS_STRING(value)
+		  	           length:(unsigned)PyString_GET_SIZE(value)
+			         encoding:[NSString defaultCStringEncoding]];
+		}
 	}
 	return realObject;
 }
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.