'parseSignature' will return object with field id, which is used for looking up objc_msgSend function from cache. But if target function's return's type of arguments' type is a array, such as structure or union, it will make the duplicate id which is same as other function without array, and it will cause the method's invocation will fail for invalid argument value.
Function _unsigned_long_long's signature is Q24@0:8Q16, and id is uint64pointerpointeruint64.
Function _union's signature is (?=CSIQ)24@0:8(?=CSIQ)16, and id is uint64pointerpointeruint64 too.
This error is because the type's toString is same for primary type and array type. Later i will make a pull request for fixing this bug, and also add some test cases for it.
'parseSignature' will return object with field
id
, which is used for looking upobjc_msgSend
function from cache. But if target function's return's type of arguments' type is a array, such as structure or union, it will make the duplicateid
which is same as other function without array, and it will cause the method's invocation will fail forinvalid argument value
.For example:
Function
_unsigned_long_long
's signature isQ24@0:8Q16
, and id isuint64pointerpointeruint64
. Function_union
's signature is(?=CSIQ)24@0:8(?=CSIQ)16
, and id isuint64pointerpointeruint64
too.This error is because the type's
toString
is same for primary type and array type. Later i will make a pull request for fixing this bug, and also add some test cases for it.