diff options
author | Andrei Karas <akaras@inbox.ru> | 2015-06-08 18:16:57 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2015-06-08 18:16:57 +0300 |
commit | c8925bec5c9344312572e621f405e146948925de (patch) | |
tree | 6309e39569b02a034a79e09170dfd8caad7feb85 /src/parsers | |
parent | b748459e207eb2d38afb343dec607fce45c6daf6 (diff) | |
download | paranucker-c8925bec5c9344312572e621f405e146948925de.tar.gz paranucker-c8925bec5c9344312572e621f405e146948925de.tar.bz2 paranucker-c8925bec5c9344312572e621f405e146948925de.tar.xz paranucker-c8925bec5c9344312572e621f405e146948925de.zip |
Fix infinite loop with CALL_EXPR and internal function.
Diffstat (limited to 'src/parsers')
-rw-r--r-- | src/parsers/expr/call_expr.cpp | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/parsers/expr/call_expr.cpp b/src/parsers/expr/call_expr.cpp index 2e079f5..18eaea5 100644 --- a/src/parsers/expr/call_expr.cpp +++ b/src/parsers/expr/call_expr.cpp @@ -40,12 +40,6 @@ void parseCallExprNode(CallExprNode *node) node->functionName = internal_fn_name(CALL_EXPR_IFN (node->gccNode)); Log::log(node, "- function: %s", node->functionName.c_str()); - - node->function = createParseNode( - node, - CALL_EXPR_FN(node->gccNode), - "function"); - const int argsCount = call_expr_nargs(node->gccNode); for (int f = 0; f < argsCount; f ++) { @@ -59,6 +53,14 @@ void parseCallExprNode(CallExprNode *node) node, CALL_EXPR_STATIC_CHAIN(node->gccNode), "chain"); + + if (node->functionName == "LOAD_LANES") + return; + + node->function = createParseNode( + node, + CALL_EXPR_FN(node->gccNode), + "function"); } } |