From 6315bd76d0484d0800fbb6f3a9851932262c1fbc Mon Sep 17 00:00:00 2001 From: graydon Date: Thu, 1 Sep 2005 01:53:33 +0000 Subject: 2005-08-31 Graydon Hoare * tapsets.cxx (dwflpp::iterate_over_srcfile_lines): Correct segv reported in PR 1270. --- tapsets.cxx | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'tapsets.cxx') diff --git a/tapsets.cxx b/tapsets.cxx index 4d44fb03..ec168ae9 100644 --- a/tapsets.cxx +++ b/tapsets.cxx @@ -547,8 +547,8 @@ dwflpp void (* callback) (Dwarf_Line * line, void * arg), void *data) { - Dwarf_Line **srcsp; - size_t nsrcs; + Dwarf_Line **srcsp = NULL; + size_t nsrcs = 0; get_module_dwarf(); @@ -556,11 +556,19 @@ dwflpp dwarf_getsrc_file (module_dwarf, srcfile, lineno, 0, &srcsp, &nsrcs)); - - for (size_t i = 0; i < nsrcs; ++i) + try { - callback (srcsp[i], data); + for (size_t i = 0; i < nsrcs; ++i) + { + callback (srcsp[i], data); + } } + catch (...) + { + free (srcsp); + throw; + } + free (srcsp); } -- cgit