]> git.ipfire.org Git - thirdparty/autoconf.git/commitdiff
autom4te: don’t crash when warnings have no stacktrace
authorZack Weinberg <zackw@panix.com>
Mon, 7 Dec 2020 16:32:55 +0000 (11:32 -0500)
committerZack Weinberg <zackw@panix.com>
Mon, 7 Dec 2020 16:32:55 +0000 (11:32 -0500)
In testing on Darwin (OSX), sometimes warnings reported from M4 code
reach autom4te with no stack trace at all, causing the perl script to
crash with a “use of uninitialized value” error.  The root cause of
the problem is not clear to me, but the script certainly shouldn’t
crash.

Problem found by Jannick <thirdedition@gmx.net>.

* bin/autom4te.in: When processing warnings, make sure $stacktrace is
  defined.

bin/autom4te.in

index e54fa145aaeb7578d2782cd775765680936511e2..febcdeea8dea45cee2f23f858987fdcd40077c18 100644 (file)
@@ -1068,6 +1068,8 @@ for (split (/\n*$separator\n*/o, contents ("$tmp/warnings")))
   # In particular, m4_warn guarantees that either $stackdump is empty, or
   # it consists of lines where only the last line ends in "top level".
   my ($cat, $loc, $msg, $stacktrace) = split ('::', $_, 4);
+  # There might not have been a stacktrace.
+  $stacktrace = '' unless defined $stacktrace;
   msg $cat, $loc, $msg,
     partial => ($stacktrace =~ /top level$/) + 0;
   for (split /\n/, $stacktrace)