summaryrefslogtreecommitdiffstats
path: root/elaborate.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'elaborate.cxx')
-rw-r--r--elaborate.cxx14
1 files changed, 9 insertions, 5 deletions
diff --git a/elaborate.cxx b/elaborate.cxx
index 7c4a5fca..30e9a775 100644
--- a/elaborate.cxx
+++ b/elaborate.cxx
@@ -488,11 +488,15 @@ alias_expansion_builder
alias_derived_probe * n = new alias_derived_probe (use, location /* soon overwritten */, this->alias);
n->body = new block();
- // The new probe gets the location list of the alias (with incoming condition joined)
- n->locations = alias->locations;
- for (unsigned i=0; i<n->locations.size(); i++)
- n->locations[i]->condition = add_condition (n->locations[i]->condition,
- location->condition);
+ // The new probe gets a deep copy of the location list of
+ // the alias (with incoming condition joined)
+ n->locations.clear();
+ for (unsigned i=0; i<alias->locations.size(); i++)
+ {
+ probe_point *pp = new probe_point(*alias->locations[i]);
+ pp->condition = add_condition (pp->condition, location->condition);
+ n->locations.push_back(pp);
+ }
// the token location of the alias,
n->tok = location->tok;