Get rid of gcc -fanalyzer error (though it was probably a false positive).
This commit is contained in:
parent
e5e1fab2db
commit
c246f53ae1
|
@ -9,6 +9,10 @@ zero bytes, because sed varies a lot from system to system and has problems
|
||||||
with binary zeros. This is from Bugzilla #2681. Patch from Jeremie
|
with binary zeros. This is from Bugzilla #2681. Patch from Jeremie
|
||||||
Courreges-Anglas via Nam Nguyen. This fixes RunGrepTest for OpenBSD.
|
Courreges-Anglas via Nam Nguyen. This fixes RunGrepTest for OpenBSD.
|
||||||
|
|
||||||
|
2. Compiling with gcc 10.2's -fanalyzer option showed up a hypothetical problem
|
||||||
|
with a NULL dereference. I don't think this case could ever occur in practice,
|
||||||
|
but I have put in a check in order to get rid of the compiler error.
|
||||||
|
|
||||||
|
|
||||||
Version 10.36 04-December-2020
|
Version 10.36 04-December-2020
|
||||||
------------------------------
|
------------------------------
|
||||||
|
|
|
@ -7,7 +7,7 @@ and semantics are as close as possible to those of the Perl 5 language.
|
||||||
|
|
||||||
Written by Philip Hazel
|
Written by Philip Hazel
|
||||||
Original API code Copyright (c) 1997-2012 University of Cambridge
|
Original API code Copyright (c) 1997-2012 University of Cambridge
|
||||||
New API code Copyright (c) 2016-2020 University of Cambridge
|
New API code Copyright (c) 2016-2021 University of Cambridge
|
||||||
|
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
@ -490,6 +490,7 @@ switch(c)
|
||||||
list[2] = (uint32_t)(end - code);
|
list[2] = (uint32_t)(end - code);
|
||||||
return end;
|
return end;
|
||||||
}
|
}
|
||||||
|
|
||||||
return NULL; /* Opcode not accepted */
|
return NULL; /* Opcode not accepted */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1186,12 +1187,16 @@ for (;;)
|
||||||
c = *repeat_opcode;
|
c = *repeat_opcode;
|
||||||
if (c >= OP_CRSTAR && c <= OP_CRMINRANGE)
|
if (c >= OP_CRSTAR && c <= OP_CRMINRANGE)
|
||||||
{
|
{
|
||||||
/* end must not be NULL. */
|
/* The return from get_chr_property_list() will never be NULL when
|
||||||
|
*code (aka c) is one of the three class opcodes. However, gcc with
|
||||||
|
-fanalyzer notes that a NULL return is possible, and grumbles. Hence we
|
||||||
|
put in a check. */
|
||||||
|
|
||||||
end = get_chr_property_list(code, utf, ucp, cb->fcc, list);
|
end = get_chr_property_list(code, utf, ucp, cb->fcc, list);
|
||||||
|
|
||||||
list[1] = (c & 1) == 0;
|
list[1] = (c & 1) == 0;
|
||||||
|
|
||||||
if (compare_opcodes(end, utf, ucp, cb, list, end, &rec_limit))
|
if (end != NULL &&
|
||||||
|
compare_opcodes(end, utf, ucp, cb, list, end, &rec_limit))
|
||||||
{
|
{
|
||||||
switch (c)
|
switch (c)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue