summaryrefslogtreecommitdiffstats
path: root/elaborate.cxx
diff options
context:
space:
mode:
authorDave Brolley <brolley@redhat.com>2009-06-11 12:00:11 -0400
committerDave Brolley <brolley@redhat.com>2009-06-11 12:00:11 -0400
commitd4d8b581532460c89895a751df5ef64e5e5088e6 (patch)
tree04b77a48d305f9507429cd3fd248b245331a5475 /elaborate.cxx
parentb12c8986778619db5bec0a5e52f2d49247e6b5ba (diff)
parent6766808e165cd3ba3c8d514529e292761e7cb650 (diff)
downloadsystemtap-steved-d4d8b581532460c89895a751df5ef64e5e5088e6.tar.gz
systemtap-steved-d4d8b581532460c89895a751df5ef64e5e5088e6.tar.xz
systemtap-steved-d4d8b581532460c89895a751df5ef64e5e5088e6.zip
Merge branch 'master' of git://sources.redhat.com/git/systemtap
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 5cfb2bb0..f0c6c5a9 100644
--- a/elaborate.cxx
+++ b/elaborate.cxx
@@ -509,11 +509,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;