From ba9e0d586ec8d2662d7ff6065797c6ef327623a7 Mon Sep 17 00:00:00 2001 From: Simon Tatham Date: Fri, 18 Sep 2015 12:20:32 +0100 Subject: [PATCH 1/1] Fix OS X build failure due to a deprecated method. 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 | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/osx.m b/osx.m index 13abc4e..7a8bdeb 100644 --- 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"); -- 2.30.2