From 246ec58c9bc56bf454f7781c2f1b8e72bbe30394 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sat, 15 Nov 2025 16:04:56 +0100 Subject: [PATCH] cobol: Fix bootstrap [PR122691] MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Andrew's recent r16-5258 change broke bootstrap on x86_64-linux with cobol enabled, the error is ../../gcc/cobol/lexio.cc: In function ‘std::pair, char*> parse_replace_pairs(const char*, const char*, bool)’: ../../gcc/cobol/lexio.cc:907:76: error: ‘%.*s’ directive argument is null [-Werror=format-overflow=] 907 | dbgmsg( "%s:%d: %s: " HOST_SIZE_T_PRINT_UNSIGNED " pairs parsed from '%.*s'", | ^~~~ The problem is that some jump threading is happening now that didn't happen before and a dbgmsg call is duplicated, once with 0, NULL as the last two arguments, once with some size and pointer. The following patch makes sure we never call it with NULL pointer, even when the size is 0, to silence the warning. 2025-11-15 Jakub Jelinek PR cobol/122691 * lexio.cc (parse_replace_pairs): Replace parsed.stmt.p with parsed.stmt.size() ? parsed.stmt.p : "" in the last argument to dbgmsg. --- gcc/cobol/lexio.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gcc/cobol/lexio.cc b/gcc/cobol/lexio.cc index 52d1affee81..d7a4f1b2814 100644 --- a/gcc/cobol/lexio.cc +++ b/gcc/cobol/lexio.cc @@ -907,7 +907,8 @@ parse_replace_pairs( const char *stmt, const char *estmt, bool is_copy_stmt ) { dbgmsg( "%s:%d: %s: " HOST_SIZE_T_PRINT_UNSIGNED " pairs parsed from '%.*s'", __func__, __LINE__, parsed.done() ? "done" : "not done", - (fmt_size_t)pairs.size(), parsed.stmt.size(), parsed.stmt.p ); + (fmt_size_t)pairs.size(), parsed.stmt.size(), + parsed.stmt.size() ? parsed.stmt.p : "" ); int i = 0; for( const auto& replace : pairs ) { dbgmsg("%s:%d:%4d: '%s' => '%s'", __func__, __LINE__, -- 2.47.3