aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2013-01-23 10:16:32 -0800
committerAlon Zakai <alonzakai@gmail.com>2013-01-23 10:16:32 -0800
commit3f8b4e23f754dd65c0b31709ee601388e70fcc89 (patch)
tree20506f52cbad94c9ac153360ac6f7fc77dc6145a /src
parentb40afadb4f35bb1df98fb8098c6b4edfe17dc6bd (diff)
handle function pointer calls to functions that return function pointers (insert meme here)
Diffstat (limited to 'src')
-rw-r--r--src/jsifier.js2
-rw-r--r--src/parseTools.js4
2 files changed, 5 insertions, 1 deletions
diff --git a/src/jsifier.js b/src/jsifier.js
index 727fb41d..ca34d406 100644
--- a/src/jsifier.js
+++ b/src/jsifier.js
@@ -1392,7 +1392,7 @@ function JSify(data, functionsOnly, givenFunctions) {
}
var returnType;
- if (byPointer || ASM_JS) returnType = type.split(' ')[0];
+ if (byPointer || ASM_JS) returnType = getReturnType(type);
if (byPointer) {
var sig = Functions.getSignature(returnType, argsTypes, hasVarArgs);
diff --git a/src/parseTools.js b/src/parseTools.js
index a5939994..9bb7aec5 100644
--- a/src/parseTools.js
+++ b/src/parseTools.js
@@ -227,6 +227,10 @@ function isFunctionType(type, out) {
return isFunctionDef({ text: argText, item: tokenize(argText.substr(1, argText.length-2), true) }, out);
}
+function getReturnType(type) {
+ return type.substr(0, type.lastIndexOf('(')-1);
+}
+
var isTypeCache = {}; // quite hot, optimize as much as possible
function isType(type) {
if (type in isTypeCache) return isTypeCache[type];