chiark / gitweb /
Fix OS X build failure due to a deprecated method.
authorSimon Tatham <anakin@pobox.com>
Fri, 18 Sep 2015 11:20:32 +0000 (12:20 +0100)
committerSimon Tatham <anakin@pobox.com>
Fri, 18 Sep 2015 11:20:32 +0000 (12:20 +0100)
Apple upgraded me to Xcode 7 yesterday, and now [NSString cString]
gives a deprecation warning, which -Werror turns into a full-on build
failure. Explicitly specify an encoding.

(I mention in a comment that there's an alternative piece of API that
I possibly ought to be using instead, but until I make a concrete
decision about where my backwards compatibility threshold is, I'll
leave it as it is for the moment.)

osx.m

diff --git a/osx.m b/osx.m
index 13abc4ee5590e136eb720d675ba5b481b6d47f84..7a8bdeb3b27ee954b9e4a734a4d21b6d74c26b1b 100644 (file)
--- a/osx.m
+++ b/osx.m
@@ -761,7 +761,24 @@ struct frontend {
     [op setAllowsMultipleSelection:NO];
 
     if ([op runModalForTypes:nil] == NSOKButton) {
-       const char *name = [[[op filenames] objectAtIndex:0] cString];
+        /*
+         * This used to be
+         *
+         *    [[[op filenames] objectAtIndex:0] cString]
+         *
+         * but the plain cString method became deprecated and Xcode 7
+         * started complaining about it. Since OS X 10.9 we can
+         * apparently use the more modern API
+         *
+         *    [[[op URLs] objectAtIndex:0] fileSystemRepresentation]
+         *
+         * but the alternative below still compiles with Xcode 7 and
+         * is a bit more backwards compatible, so I'll try it for the
+         * moment.
+         */
+       const char *name = [[[op filenames] objectAtIndex:0]
+                               cStringUsingEncoding:
+                                   [NSString defaultCStringEncoding]];
        char *err;
 
         FILE *fp = fopen(name, "r");