diff options
Diffstat (limited to 'tapsets.cxx')
-rw-r--r-- | tapsets.cxx | 18 |
1 files changed, 13 insertions, 5 deletions
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); } |