From: Vadim Zeitlin Date: Fri, 1 Jun 2012 15:25:25 +0000 (+0000) Subject: Fix wxWebKitCtrl::RunScript() return value. X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/3e1db65507361f69f37b1f66de319a1c9bf5fca8?ds=inline Fix wxWebKitCtrl::RunScript() return value. Replace comparisons of the type name of the returned value with isKindOfClass: checks which are more reliable. Closes #14358. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@71631 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/html/htmlctrl/webkit/webkit.mm b/src/html/htmlctrl/webkit/webkit.mm index d6a4e6fe7d..0d65ecbe06 100644 --- a/src/html/htmlctrl/webkit/webkit.mm +++ b/src/html/htmlctrl/webkit/webkit.mm @@ -682,18 +682,20 @@ wxString wxWebKitCtrl::RunScript(const wxString& javascript){ id result = [[m_webView windowScriptObject] evaluateWebScript:(NSString*)wxNSStringWithWxString( javascript )]; NSString* resultAsString; - NSString* className = NSStringFromClass([result class]); - if ([className isEqualToString:@"NSCFNumber"]) - resultAsString = [NSString stringWithFormat:@"%@", result]; - else if ([className isEqualToString:@"NSCFString"]) - resultAsString = result; - else if ([className isEqualToString:@"NSCFBoolean"]){ - if ([result boolValue]) - resultAsString = @"true"; + if ([result isKindOfClass:[NSNumber class]]){ + // __NSCFBoolean is a subclass of NSNumber + if (strcmp([result objCType], @encode(BOOL)) == 0){ + if ([result boolValue]) + resultAsString = @"true"; + else + resultAsString = @"false"; + } else - resultAsString = @"false"; + resultAsString = [NSString stringWithFormat:@"%@", result]; } - else if ([className isEqualToString:@"WebScriptObject"]) + else if ([result isKindOfClass:[NSString class]]) + resultAsString = result; + else if ([result isKindOfClass:[WebScriptObject class]]) resultAsString = [result stringRepresentation]; else return wxString(); // This can happen, see e.g. #12361.