[ https://issues.apache.org/jira/browse/CB-6150?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Shazron Abdullah resolved CB-6150. ---------------------------------- Resolution: Fixed Fix Version/s: 3.5.0 > objc_msgSend causes EXC_BAD_ACCESS with plugins on arm64 > -------------------------------------------------------- > > Key: CB-6150 > URL: https://issues.apache.org/jira/browse/CB-6150 > Project: Apache Cordova > Issue Type: Bug > Components: iOS > Affects Versions: 3.4.0 > Environment: iOS 7.0.6 arm64 > Reporter: Joris Verbogt > Assignee: Shazron Abdullah > Labels: core > Fix For: 3.5.0 > > > This bug was mentioned before in https://issues.apache.org/jira/browse/CB-5888 > The code in CDVCommandQueue line 197: > objc_msgSend(obj, normalSelector, command); > Causes a EXC_BAD_ACCESS on arm64. > According to Apple's docs at > https://developer.apple.com/library/ios/documentation/General/Conceptual/CocoaTouch64BitGuide/ConvertingYourAppto64-Bit/ConvertingYourAppto64-Bit.html > : > An exception to the casting rule described above is when you are calling the > objc_msgSend function or any other similar functions in the Objective-C > runtime that send messages. Although the prototype for the message functions > has a variadic form, the method function that is called by the Objective-C > runtime does not share the same prototype. The Objective-C runtime directly > dispatches to the function that implements the method, so the calling > conventions are mismatched, as described previously. Therefore you must cast > the objc_msgSend function to a prototype that matches the method function > being called. > This bug can be solved by explicit casting, like so: > {code} > ((void(*)(id, SEL, id))objc_msgSend)(obj, normalSelector, command); > {code} -- This message was sent by Atlassian JIRA (v6.2#6252)