summaryrefslogtreecommitdiff
path: root/src/analysis/function.cpp
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2015-06-12 00:21:21 +0300
committerAndrei Karas <akaras@inbox.ru>2015-06-12 00:21:21 +0300
commite3bcf98ab8678ecab7ac07cadb9f897884a6c47d (patch)
treef30ab96cbfa67ba52be19ae15b6acebe4419b0b1 /src/analysis/function.cpp
parent15e7eb29e7d817df573154f4e635e5931c02c6c2 (diff)
downloadparanucker-e3bcf98ab8678ecab7ac07cadb9f897884a6c47d.tar.gz
paranucker-e3bcf98ab8678ecab7ac07cadb9f897884a6c47d.tar.bz2
paranucker-e3bcf98ab8678ecab7ac07cadb9f897884a6c47d.tar.xz
paranucker-e3bcf98ab8678ecab7ac07cadb9f897884a6c47d.zip
Fix crash in function analysis.
Diffstat (limited to 'src/analysis/function.cpp')
-rw-r--r--src/analysis/function.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/analysis/function.cpp b/src/analysis/function.cpp
index bb6cde6..114bb43 100644
--- a/src/analysis/function.cpp
+++ b/src/analysis/function.cpp
@@ -109,11 +109,13 @@ void analyseFunction(FunctionDeclNode *node, const WalkItem &wi, WalkItem &wo)
if (command == Command::FindArgs)
Log::log("%s: ", node->label.c_str());
- const int sz = node->args.size();
+ int sz = node->args.size();
+ if (types.size() < sz)
+ sz = types.size();
for (int f = 0; f < sz; f ++)
{
const TypeNode *const type = types[f];
- if (type->nodeType != POINTER_TYPE)
+ if (!type || type->nodeType != POINTER_TYPE)
continue;
const ParmDeclNode *const name = node->args[f];
if (nonNull.find(f + 1) == nonNull.end())