From 3e1db65507361f69f37b1f66de319a1c9bf5fca8 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Fri, 1 Jun 2012 15:25:25 +0000 Subject: [PATCH] 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 --- src/html/htmlctrl/webkit/webkit.mm | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) 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. -- 2.50.0