diff options
author | Mark Wielaard <mjw@redhat.com> | 2008-09-30 16:35:13 +0200 |
---|---|---|
committer | Mark Wielaard <mjw@redhat.com> | 2008-09-30 16:35:13 +0200 |
commit | a3de5d6e615aafb9528e22db5eeb6ddc12823256 (patch) | |
tree | 664e68a02748bfb4df76e5bbe2f493a4d3141d16 | |
parent | 338e2309ef67c7b0d1ac3df852502e55bc316c8a (diff) | |
download | systemtap-steved-a3de5d6e615aafb9528e22db5eeb6ddc12823256.tar.gz systemtap-steved-a3de5d6e615aafb9528e22db5eeb6ddc12823256.tar.xz systemtap-steved-a3de5d6e615aafb9528e22db5eeb6ddc12823256.zip |
Don't crash when reporting an error if getting alternatives fails.
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | tapsets.cxx | 6 |
2 files changed, 10 insertions, 2 deletions
@@ -1,3 +1,9 @@ +2008-09-30 Mark Wielaard <mjw@redhat.com> + + * tapsets.cxx (literal_stmt_for_local): Check if alternatives can be + provided after calling dwarf_formref_die. + (literal_stmt_for_return): Likewise. + 2008-09-26 Frank Ch. Eigler <fche@elastic.org> PR 6916 diff --git a/tapsets.cxx b/tapsets.cxx index b1475997..a5a62c7a 100644 --- a/tapsets.cxx +++ b/tapsets.cxx @@ -2241,7 +2241,8 @@ struct dwflpp { die = dwarf_formref_die (&attr_mem, &vardie); stringstream alternatives; - print_members(die,alternatives); + if (die != NULL) + print_members(die,alternatives); throw semantic_error("unable to find local '" + local + "'" + " near pc " + lex_cast_hex<string>(pc) + (alternatives.str() == "" ? "" : (" (alternatives:" + alternatives.str () + ")"))); @@ -2317,7 +2318,8 @@ struct dwflpp { die = dwarf_formref_die (&attr_mem, vardie); stringstream alternatives; - print_members(die,alternatives); + if (die != NULL) + print_members(die,alternatives); throw semantic_error("unable to find return value" " near pc " + lex_cast_hex<string>(pc) + (alternatives.str() == "" ? "" : (" (alternatives:" + alternatives.str () + ")"))); |