mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-24 02:03:35 +08:00
localedef: Use initializer for flexible array member [BZ #24950]
struct charseq used a zero-length array instead of a flexible array member. This required a strange construct to initialize struct charseq objects, and GCC 10 warns about that: cc1: error: writing 1 byte into a region of size 0 [-Werror=stringop-overflow=] In file included from programs/repertoire.h:24, from programs/localedef.h:32, from programs/ld-ctype.c:35: programs/charmap.h:63:17: note: destination object declared here 63 | unsigned char bytes[0]; | ^~~~~ cc1: error: writing 1 byte into a region of size 0 [-Werror=stringop-overflow=] programs/charmap.h:63:17: note: destination object declared here cc1: error: writing 1 byte into a region of size 0 [-Werror=stringop-overflow=] programs/charmap.h:63:17: note: destination object declared here cc1: error: writing 1 byte into a region of size 0 [-Werror=stringop-overflow=] programs/charmap.h:63:17: note: destination object declared here The change makes the object physically const, but it is not expected to be modified.
This commit is contained in:
parent
9a1e7257a4
commit
1471fa556a
@ -1,3 +1,11 @@
|
||||
2019-09-03 Florian Weimer <fweimer@redhat.com>
|
||||
|
||||
[BZ #24950]
|
||||
* locale/programs/charmap.h (struct charseq): Turn bytes into a
|
||||
flexible array member.
|
||||
* locale/programs/ld-ctype.c (ctype_finish): Use initializer for
|
||||
replace.
|
||||
|
||||
2019-09-02 Florian Weimer <fweimer@redhat.com>
|
||||
|
||||
* misc/tst-mntent-autofs.c: New file.
|
||||
|
@ -60,7 +60,7 @@ struct charseq
|
||||
const char *name;
|
||||
uint32_t ucs4;
|
||||
int nbytes;
|
||||
unsigned char bytes[0];
|
||||
unsigned char bytes[];
|
||||
};
|
||||
|
||||
|
||||
|
@ -842,8 +842,6 @@ no input digits defined and none of the standard names in the charmap"));
|
||||
for (cnt = 0; cnt < 10; ++cnt)
|
||||
if (ctype->mboutdigits[cnt] == NULL)
|
||||
{
|
||||
static struct charseq replace[2];
|
||||
|
||||
if (!warned)
|
||||
{
|
||||
record_error (0, 0, _("\
|
||||
@ -851,10 +849,12 @@ not all characters used in `outdigit' are available in the charmap"));
|
||||
warned = 1;
|
||||
}
|
||||
|
||||
replace[0].nbytes = 1;
|
||||
replace[0].bytes[0] = '?';
|
||||
replace[0].bytes[1] = '\0';
|
||||
ctype->mboutdigits[cnt] = &replace[0];
|
||||
static const struct charseq replace =
|
||||
{
|
||||
.nbytes = 1,
|
||||
.bytes = "?",
|
||||
};
|
||||
ctype->mboutdigits[cnt] = (struct charseq *) &replace;
|
||||
}
|
||||
|
||||
warned = 0;
|
||||
|
Loading…
Reference in New Issue
Block a user