Thread: Allocator sizeof operand mismatch (src/backend/regex/regcomp.c)

Allocator sizeof operand mismatch (src/backend/regex/regcomp.c)

From
Ranier Vilela
Date:
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
Attachment

Re: Allocator sizeof operand mismatch (src/backend/regex/regcomp.c)

From
Zhang Mingli
Date:

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
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

Re: Allocator sizeof operand mismatch (src/backend/regex/regcomp.c)

From
Tom Lane
Date:
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



Re: Allocator sizeof operand mismatch (src/backend/regex/regcomp.c)

From
Zhang Mingli
Date:
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.