summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2015-07-22 14:03:16 +0300
committerAndrei Karas <akaras@inbox.ru>2015-07-22 14:03:16 +0300
commite4cc6e7e74e103bef8b50e272bc82d87ce9c8d35 (patch)
tree8a4da667af5ddf0f4b9ce2617ef598f35c34b595 /src
parent77d5fb6fbf6553fa4a62be9e90337394a147f856 (diff)
downloadparanucker-e4cc6e7e74e103bef8b50e272bc82d87ce9c8d35.tar.gz
paranucker-e4cc6e7e74e103bef8b50e272bc82d87ce9c8d35.tar.bz2
paranucker-e4cc6e7e74e103bef8b50e272bc82d87ce9c8d35.tar.xz
paranucker-e4cc6e7e74e103bef8b50e272bc82d87ce9c8d35.zip
Fix memory corruption on removing linked variables.
Diffstat (limited to 'src')
-rw-r--r--src/analysis/collections.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/analysis/collections.cpp b/src/analysis/collections.cpp
index def9573..9bdcee8 100644
--- a/src/analysis/collections.cpp
+++ b/src/analysis/collections.cpp
@@ -151,6 +151,11 @@ void removeLinkVarOnly(WalkItem &wi, const std::string &var)
if (it2 != wi.linkedVars.end())
{
const StringSet linked = (*it2).second;
+ if (linked.empty())
+ {
+ wi.linkedVars.erase(var);
+ return;
+ }
std::string newParent = *(linked.begin());
wi.linkedReverseVars.erase(newParent);
wi.linkedVars[newParent] = linked;