diff options
author | Andrei Karas <akaras@inbox.ru> | 2015-06-12 00:21:21 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2015-06-12 00:21:21 +0300 |
commit | e3bcf98ab8678ecab7ac07cadb9f897884a6c47d (patch) | |
tree | f30ab96cbfa67ba52be19ae15b6acebe4419b0b1 /src/analysis/function.cpp | |
parent | 15e7eb29e7d817df573154f4e635e5931c02c6c2 (diff) | |
download | paranucker-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.cpp | 6 |
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()) |