Обсуждение: BUG #19343: toast_internals.c:139:2: warning: missing braces around initializer [-Wmissing-braces]

Поиск
Список
Период
Сортировка

BUG #19343: toast_internals.c:139:2: warning: missing braces around initializer [-Wmissing-braces]

От
PG Bug reporting form
Дата:
The following bug has been logged on the website:

Bug reference:      19343
Logged by:          Natalie Reno
Email address:      natalie.reno@cchmc.org
PostgreSQL version: 16.11
Operating system:   RHEL7
Description:

When compiling the latest version, 16.11, I received the following error:
gcc -std=gnu99 -Wall -Wmissing-prototypes -Wpointer-arith
-Wdeclaration-after-statement -Werror=vla -Wendif-labels
-Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv
-fexcess-precision=standard -O2 -I../../../../src/include -D_GNU_SOURCE
-c -o toast_internals.o toast_internals.c
toast_internals.c: In function ‘toast_save_datum’:
toast_internals.c:139:2: warning: missing braces around initializer
[-Wmissing-braces]
  }   chunk_data = {0}; /* silence compiler warning */
  ^
toast_internals.c:139:2: warning: (near initialization for ‘chunk_data.hdr’)
[-Wmissing-braces]

When I compared toast_internals.c files between 16.11 and 16.10, I found
this difference that is supposed to account for silencing the compiler
warning.

diff
/u01/app/postgres/product/postgresql-16.11/src/backend/access/common/toast_internals.c
/u01/app/postgres/product/postgresql-16.10/src/backend/access/common/toast_internals.c
139c139
<       }                       chunk_data = {0};       /* silence compiler
warning */ <-- 16.11
---
>       }                       chunk_data; <-- 16.10


On 02/12/2025 21:41, PG Bug reporting form wrote:
> The following bug has been logged on the website:
`>
> Bug reference:      19343
> Logged by:          Natalie Reno
> Email address:      natalie.reno@cchmc.org
> PostgreSQL version: 16.11
> Operating system:   RHEL7
> Description:
> 
> When compiling the latest version, 16.11, I received the following error:
> gcc -std=gnu99 -Wall -Wmissing-prototypes -Wpointer-arith
> -Wdeclaration-after-statement -Werror=vla -Wendif-labels
> -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv
> -fexcess-precision=standard -O2 -I../../../../src/include -D_GNU_SOURCE
> -c -o toast_internals.o toast_internals.c
> toast_internals.c: In function ‘toast_save_datum’:
> toast_internals.c:139:2: warning: missing braces around initializer
> [-Wmissing-braces]
>    }   chunk_data = {0}; /* silence compiler warning */
>    ^
> toast_internals.c:139:2: warning: (near initialization for ‘chunk_data.hdr’)
> [-Wmissing-braces]
> 
> When I compared toast_internals.c files between 16.11 and 16.10, I found
> this difference that is supposed to account for silencing the compiler
> warning.
> 
> diff
> /u01/app/postgres/product/postgresql-16.11/src/backend/access/common/toast_internals.c
> /u01/app/postgres/product/postgresql-16.10/src/backend/access/common/toast_internals.c
> 139c139
> <       }                       chunk_data = {0};       /* silence compiler
> warning */ <-- 16.11
> ---
>>        }                       chunk_data; <-- 16.10

On 'master', this was done slightly differently, see commit 748caa9dcb. 
Peter decided to only do that bigger code rearrangement on 'master', and 
do the less invasive initialization on backbranches [1]. I think we 
should just backpatch the bigger code rearrangement too.

[1] 
https://www.postgresql.org/message-id/76f41fdc-69e1-43b4-b9aa-503b07980de1%40eisentraut.org

- Heikki