summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2015-07-13 17:34:30 +0300
committerAndrei Karas <akaras@inbox.ru>2015-07-13 17:34:30 +0300
commit6c98fdf78af4d1e051f149106bd45a011279ebda (patch)
tree45bb14d17ece2722075771e1186e52e125f12f85
parent47ab3221ba7b5858bcf63e3732d20e32b06140b2 (diff)
downloadparanucker-6c98fdf78af4d1e051f149106bd45a011279ebda.tar.gz
paranucker-6c98fdf78af4d1e051f149106bd45a011279ebda.tar.bz2
paranucker-6c98fdf78af4d1e051f149106bd45a011279ebda.tar.xz
paranucker-6c98fdf78af4d1e051f149106bd45a011279ebda.zip
Add ability to detect return from operator new as non null pointer.
It allow this example: int ptr = new int[10]; // paranucker work with ptr here as with non null pointer
-rw-r--r--src/analysis/expression.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/analysis/expression.cpp b/src/analysis/expression.cpp
index 54d73c2..2162666 100644
--- a/src/analysis/expression.cpp
+++ b/src/analysis/expression.cpp
@@ -775,7 +775,9 @@ bool handleSetVarToFunction(const std::string &var,
return false;
if (findTreeListPurpose(static_cast<TreeListNode*>(func->functionType->attribute),
- "returns_nonnull"))
+ "returns_nonnull") ||
+ func->label == "operator new" ||
+ func->label == "operator new []")
{ // function have attribute returns_nonnull. This mean result cant be null
addNonNullVar(wo, var);
}