> Am 15.11.2025 um 11:12 schrieb Jakub Jelinek <[email protected]>:
> 
> Hi!
> 
> 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<std::__cxx11::list<replace_t>,
> 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.
> 
> Bootstrapped/regtested on x86_64-linux, ok for trunk?

Ok

Richard 

> 2025-11-14  Jakub Jelinek  <[email protected]>
> 
>    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/lexio.cc.jj    2025-07-15 14:49:29.931515987 +0200
> +++ gcc/lexio.cc    2025-11-14 20:16:46.604504566 +0100
> @@ -907,7 +907,8 @@ parse_replace_pairs( const char *stmt, c
>     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__,
> 
>    Jakub
> 

Reply via email to