From 1af1e62d9f67237277dd771a0cb78fa6b069742d Mon Sep 17 00:00:00 2001 From: Josh Stone Date: Wed, 7 Apr 2010 16:41:41 -0700 Subject: Clean up and clarify semantic_error chaining I consolidated the copy-construction that every target_symbol::chain caller was doing. I also removed the comments that target_symbol errors might be chained due to function wildcards, because it's not true -- each derived instance gets a deep_copy of the probe body. However, @cast can still chain since it may try multiple modules to resolve the casting dereference. --- staptree.cxx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'staptree.cxx') diff --git a/staptree.cxx b/staptree.cxx index 4e57ac18..f7ce128e 100644 --- a/staptree.cxx +++ b/staptree.cxx @@ -224,8 +224,11 @@ target_symbol::assert_no_components(const std::string& tapset) } -void target_symbol::chain (semantic_error *e) +void target_symbol::chain (const semantic_error &er) { + semantic_error* e = new semantic_error(er); + if (!e->tok1) + e->tok1 = this->tok; assert (e->chain == 0); e->chain = this->saved_conversion_error; this->saved_conversion_error = e; -- cgit