From 3c22d0b0c80ee0c1add4d69032c486fe648f0478 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Thu, 27 Sep 2018 14:51:39 -0400 Subject: [PATCH] Swift exit(). --- SignalServiceKit/src/Util/OWSAsserts.h | 9 +++++++-- SignalServiceKit/src/Util/OWSAsserts.m | 8 ++++++++ SignalServiceKit/src/Util/OWSSwiftUtils.swift | 16 ++++++++++++++-- 3 files changed, 29 insertions(+), 4 deletions(-) diff --git a/SignalServiceKit/src/Util/OWSAsserts.h b/SignalServiceKit/src/Util/OWSAsserts.h index 61427a58f..35e9748f1 100755 --- a/SignalServiceKit/src/Util/OWSAsserts.h +++ b/SignalServiceKit/src/Util/OWSAsserts.h @@ -153,17 +153,22 @@ NS_ASSUME_NONNULL_BEGIN OWSCFailWithoutLogging(_messageFormat, ##__VA_ARGS__); \ } while (NO) +void SwiftExit(NSString *message, const char *file, const char *function, int line); #define OWSFail(_messageFormat, ...) \ do { \ OWSFailDebug(_messageFormat, ##__VA_ARGS__); \ - exit(0); \ + \ + NSString *_message = [NSString stringWithFormat:_messageFormat, ##__VA_ARGS__]; \ + SwiftExit(_message, __FILE__, __PRETTY_FUNCTION__, __LINE__); \ } while (0) #define OWSCFail(_messageFormat, ...) \ do { \ OWSCFailDebug(_messageFormat, ##__VA_ARGS__); \ - exit(0); \ + \ + NSString *_message = [NSString stringWithFormat:_messageFormat, ##__VA_ARGS__]; \ + SwiftExit(_message, __FILE__, __PRETTY_FUNCTION__, __LINE__); \ } while (NO) // Avoids Clang analyzer warning: diff --git a/SignalServiceKit/src/Util/OWSAsserts.m b/SignalServiceKit/src/Util/OWSAsserts.m index 043db9c96..a5afbe2d7 100755 --- a/SignalServiceKit/src/Util/OWSAsserts.m +++ b/SignalServiceKit/src/Util/OWSAsserts.m @@ -3,7 +3,15 @@ // #import "OWSAsserts.h" +#import NS_ASSUME_NONNULL_BEGIN +void SwiftExit(NSString *message, const char *file, const char *function, int line) +{ + NSString *_file = [NSString stringWithFormat:@"%s", file]; + NSString *_function = [NSString stringWithFormat:@"%s", function]; + [OWSSwiftUtils owsFail:message file:_file function:_function line:line]; +} + NS_ASSUME_NONNULL_END diff --git a/SignalServiceKit/src/Util/OWSSwiftUtils.swift b/SignalServiceKit/src/Util/OWSSwiftUtils.swift index 3b869fbe6..bcea05665 100644 --- a/SignalServiceKit/src/Util/OWSSwiftUtils.swift +++ b/SignalServiceKit/src/Util/OWSSwiftUtils.swift @@ -43,7 +43,7 @@ public func owsFail(_ logMessage: String, file: String = #file, function: String = #function, line: Int = #line) -> Never { - + owsFailDebug(logMessage, file: file, function: function, line: line) let formattedMessage = owsFormatLogMessage(logMessage, file: file, function: function, line: line) fatalError(formattedMessage) @@ -56,4 +56,16 @@ public func notImplemented(file: String = #file, line: Int = #line) -> Never { owsFail("Method not implemented.", file: file, function: function, line: line) } - + +@objc public class OWSSwiftUtils: NSObject { + // This method can be invoked from Obj-C to exit the app. + @objc public class func owsFail(_ logMessage: String, + file: String = #file, + function: String = #function, + line: Int = #line) -> Never { + + owsFailDebug(logMessage, file: file, function: function, line: line) + let formattedMessage = owsFormatLogMessage(logMessage, file: file, function: function, line: line) + fatalError(formattedMessage) + } +}