In perl.git, the branch blead has been updated

<http://perl5.git.perl.org/perl.git/commitdiff/4d00a3198aa6950e874328ec431d15c821382cce?hp=5942644739c2d477d25e89b4a40ced7cfb0ee4e9>

- Log -----------------------------------------------------------------
commit 4d00a3198aa6950e874328ec431d15c821382cce
Author: Jarkko Hietaniemi <[email protected]>
Date:   Sun Mar 27 11:11:18 2016 -0400

    Move the zeroing back before the dladdr() call.

M       util.c

commit 70ead873d4b864ca127d4f75aa654724264ff91b
Author: Vladimir Timofeev <[email protected]>
Date:   Fri Mar 25 08:41:25 2016 -0400

    [perl #127773: Assertion failure in perl built with Dusecbacktrace]

M       util.c
-----------------------------------------------------------------------

Summary of changes:
 util.c | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/util.c b/util.c
index c1c854f..9ad40c1 100644
--- a/util.c
+++ b/util.c
@@ -6252,14 +6252,14 @@ static void atos_symbolize(atos_context* ctx,
             char out[1024];
             UV cnt = fread(out, 1, sizeof(out), fp);
             if (cnt < sizeof(out)) {
-                const char* p = atos_parse(out + cnt, out,
+                const char* p = atos_parse(out + cnt - 1, out,
                                            source_name_size,
                                            source_line);
                 if (p) {
                     Newx(*source_name,
-                         *source_name_size + 1, char);
+                         *source_name_size, char);
                     Copy(p, *source_name,
-                         *source_name_size + 1,  char);
+                         *source_name_size,  char);
                 }
             }
             pclose(fp);
@@ -6384,14 +6384,15 @@ Perl_get_c_backtrace(pTHX_ int depth, int skip)
         for (i = skip; i < try_depth; i++) {
             Dl_info* dl_info = &dl_infos[i];
 
-            total_bytes += sizeof(Perl_c_backtrace_frame);
-
+            object_name_sizes[i] = 0;
             source_names[i] = NULL;
             source_name_sizes[i] = 0;
             source_lines[i] = 0;
 
             /* Yes, zero from dladdr() is failure. */
             if (dladdr(raw_frames[i], dl_info)) {
+                total_bytes += sizeof(Perl_c_backtrace_frame);
+
                 object_name_sizes[i] =
                     dl_info->dli_fname ? strlen(dl_info->dli_fname) : 0;
                 symbol_name_sizes[i] =

--
Perl5 Master Repository

Reply via email to