Allocator sizeof operand mismatch (src/backend/regex/regcomp.c)
Hackorum builds and tests every patch posted to the lists, not only commitfest submissions. This is Hackorum's own CI rather than the PostgreSQL project's, and it is still under testing - please report anything that looks wrong.
Every patchset is also pushed to a branch of our PostgreSQL fork, so you can check out the same tree CI built. Without a PostgreSQL checkout:
git clone --branch t46359_1 https://github.com/hackorum-dev/postgres.gitIn a checkout you already have, add the fork once:
git remote add hackorum https://github.com/hackorum-dev/postgres.gitthen, for this patchset and every later one:
git fetch hackorum t46359_1 && git checkout t46359_1Patchset v1 (message #1) is on t46359_1
Hi,
About the error:
Result of 'malloc' is converted to a pointer of type 'char', which is
incompatible with sizeof operand type 'struct guts'
The patch attached tries to fix this.
regards,
Ranier Vilela
I think it’s ok, re_guts is converted when used
(struct guts *) re->re_guts;
And there is comments in regex.h
char *re_guts; /* `char *' is more portable than `void *' */
Regards,
Zhang Mingli
Show quoted text
On Aug 6, 2022, 20:13 +0800, Ranier Vilela <ranier.vf@gmail.com>, wrote:
Hi,
About the error:
Result of 'malloc' is converted to a pointer of type 'char', which is incompatible with sizeof operand type 'struct guts'The patch attached tries to fix this.
regards,
Ranier Vilela
Zhang Mingli <zmlpostgres@gmail.com> writes:
I think it’s ok, re_guts is converted when used
(struct guts *) re->re_guts;
And there is comments in regex.h
char *re_guts; /* `char *' is more portable than `void *' */
Boy, that comment is showing its age isn't it? If we were to do
anything about this, I'd be more inclined to change re_guts to void*.
But, never having seen any compiler warnings about this code,
I don't feel a strong need to do something.
regards, tom lane
On Aug 6, 2022, 22:47 +0800, Tom Lane <tgl@sss.pgh.pa.us>, wrote:
Zhang Mingli <zmlpostgres@gmail.com> writes:
I think it’s ok, re_guts is converted when used
(struct guts *) re->re_guts;
And there is comments in regex.h
char *re_guts; /* `char *' is more portable than `void *' */Boy, that comment is showing its age isn't it? If we were to do
anything about this, I'd be more inclined to change re_guts to void*.
Got it , thanks.