From b4ec547b86e6dd878d312cc79dddabce825a4492 Mon Sep 17 00:00:00 2001 From: Zack Weinberg Date: Mon, 7 Dec 2020 11:32:55 -0500 Subject: [PATCH] =?utf8?q?autom4te:=20don=E2=80=99t=20crash=20when=20warni?= =?utf8?q?ngs=20have=20no=20stacktrace?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 . * bin/autom4te.in: When processing warnings, make sure $stacktrace is defined. --- bin/autom4te.in | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bin/autom4te.in b/bin/autom4te.in index e54fa145a..febcdeea8 100644 --- a/bin/autom4te.in +++ b/bin/autom4te.in @@ -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) -- 2.47.3