]> git.ipfire.org Git - thirdparty/postgresql.git/commit
Fix possible omission of variable storage markers in ECPG.
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 9 Sep 2022 19:34:04 +0000 (15:34 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 9 Sep 2022 19:34:04 +0000 (15:34 -0400)
commitfe4e151d4a7c4da728a71167148afdb4bcb4d4dd
tree36ccd37a1efbbf24a3e9e968271e1c6ce8883f20
parent4d3f54bd7a0da755e4c469026ee51891a2ed53b7
Fix possible omission of variable storage markers in ECPG.

The ECPG preprocessor converted code such as

static varchar str1[10], str2[20], str3[30];

into

static  struct varchar_1  { int len; char arr[ 10 ]; }  str1 ;
        struct varchar_2  { int len; char arr[ 20 ]; }  str2 ;
        struct varchar_3  { int len; char arr[ 30 ]; }  str3 ;

thus losing the storage attribute for the later variables.
Repeat the declaration for each such variable.

(Note that this occurred only for variables declared "varchar"
or "bytea", which may help explain how it escaped detection
for so long.)

Andrey Sokolov

Discussion: https://postgr.es/m/942241662288242@mail.yandex.ru
src/interfaces/ecpg/preproc/ecpg.trailer
src/interfaces/ecpg/preproc/type.h
src/interfaces/ecpg/test/expected/preproc-variable.c
src/interfaces/ecpg/test/expected/preproc-variable.stderr
src/interfaces/ecpg/test/expected/preproc-variable.stdout
src/interfaces/ecpg/test/preproc/variable.pgc