URL:
<http://savannah.gnu.org/patch/?9620>
Summary: spurious compiler warning: "potential null pointer
dereference"
Project: bison
Submitted by: frank
Submitted on: Wed 18 Apr 2018 07:54:36 AM UTC
Category: None
Priority: 5 - Normal
Status: None
Privacy: Public
Assigned to: None
Originator Email:
Open/Closed: Open
Discussion Lock: Any
_______________________________________________________
Details:
The generated parser produces a GCC warning with "-Wnull-dereference":
parse.cpp: error: potential null pointer dereference
[-Werror=null-dereference]
The reason is:
char const* yyformat = YY_NULLPTR;
before it's set in a switch for cases 0 to 5. Now, this seems in fact correct
due to "YYERROR_VERBOSE_ARGS_MAXIMUM = 5" and the way the code finally gets
there. But that's a bit much to expect the compiler to recognize.
Actually I do find the code rather fragile; the definition of
YYERROR_VERBOSE_ARGS_MAXIMUM does not even have a comment pointing out the
ramifications of changing it.
I also find the code a bit strange at all; why have a number of format strings
that differ only in the number of "or %s" parts, and which must all be
translated individually? Rather than adding repeated parts in a loop, or using
a more flexible wording such as "expecing one of the following: "?
Anyway, this patch does just the minimum necessary to avoid the warning (and
make the code more robust in case someone changes
YYERROR_VERBOSE_ARGS_MAXIMUM), by using "default" instead of "case 0".
_______________________________________________________
File Attachments:
-------------------------------------------------------
Date: Wed 18 Apr 2018 07:54:36 AM UTC Name: null-dereference-warning.patch
Size: 3KiB By: frank
<http://savannah.gnu.org/patch/download.php?file_id=43966>
_______________________________________________________
Reply to this item at:
<http://savannah.gnu.org/patch/?9620>
_______________________________________________
Message sent via/by Savannah
http://savannah.gnu.org/