Skip to content

Commit 6c1cc35

Browse files
committed
Test ECPG decadd(), decdiv(), decmul(), and decsub() for risnull() input.
Since commit 757fb0e, these Informix-compat functions return 0 without changing the output parameter. Initialize the output parameter before the test call, making that obvious. Before this, the expected test output has been depending on freed stack memory. "gcc -ftrivial-auto-var-init=pattern" revealed that. Back-patch to v13 (all supported versions). Discussion: https://postgr.es/m/20250106192748.cf.nmisch@google.com
1 parent aaa0f06 commit 6c1cc35

File tree

3 files changed

+136
-116
lines changed

3 files changed

+136
-116
lines changed

src/interfaces/ecpg/test/compat_informix/dec_test.pgc

+10
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,16 @@ main(void)
142142
c = deccmp(decarr[i], decarr[j]);
143143
printf("dec[c,%d,%d]: %d\n", i, j, c);
144144

145+
/*
146+
* decarr[count-1] is risnull(), which makes these functions
147+
* return 0 without changing the output parameter. Make that
148+
* clear by initializing each output parameter.
149+
*/
150+
deccvint(7654321, &a);
151+
deccvint(7654321, &s);
152+
deccvint(7654321, &m);
153+
deccvint(7654321, &d);
154+
145155
r = decadd(decarr[i], decarr[j], &a);
146156
if (r)
147157
{

src/interfaces/ecpg/test/expected/compat_informix-dec_test.c

+10
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,16 @@ main(void)
195195
c = deccmp(decarr[i], decarr[j]);
196196
printf("dec[c,%d,%d]: %d\n", i, j, c);
197197

198+
/*
199+
* decarr[count-1] is risnull(), which makes these functions
200+
* return 0 without changing the output parameter. Make that
201+
* clear by initializing each output parameter.
202+
*/
203+
deccvint(7654321, &a);
204+
deccvint(7654321, &s);
205+
deccvint(7654321, &m);
206+
deccvint(7654321, &d);
207+
198208
r = decadd(decarr[i], decarr[j], &a);
199209
if (r)
200210
{

src/interfaces/ecpg/test/expected/compat_informix-dec_test.stdout

+116-116
Original file line numberDiff line numberDiff line change
@@ -222,10 +222,10 @@ dec[s,0,13]:
222222
dec[m,0,13]: *
223223
dec[d,0,13]:
224224
dec[c,0,14]: 2147483647
225-
dec[a,0,14]:
226-
dec[s,0,14]:
227-
dec[m,0,14]: *
228-
dec[d,0,14]:
225+
dec[a,0,14]: 7654321.0
226+
dec[s,0,14]: 7654321.0
227+
dec[m,0,14]: 7654321.0
228+
dec[d,0,14]: 7654321.0
229229
dec[c,1,0]: -1
230230
(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
231231
dec[s,1,0]:
@@ -297,10 +297,10 @@ dec[s,1,13]: -1234567890123456789012345680.91
297297
dec[m,1,13]: -2469135780246913578024691357.82
298298
dec[d,1,13]: -0.0000000000000000000000000016200000145800001
299299
dec[c,1,14]: 2147483647
300-
dec[a,1,14]: 1234567890123456789012345676.91
301-
dec[s,1,14]: -1234567890123456789012345680.91
302-
dec[m,1,14]: -2469135780246913578024691357.82
303-
dec[d,1,14]: -0.0000000000000000000000000016200000145800001
300+
dec[a,1,14]: 7654321.0
301+
dec[s,1,14]: 7654321.0
302+
dec[m,1,14]: 7654321.0
303+
dec[d,1,14]: 7654321.0
304304
dec[c,2,0]: -1
305305
(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
306306
dec[s,2,0]:
@@ -372,10 +372,10 @@ dec[s,2,13]:
372372
dec[m,2,13]:
373373
dec[d,2,13]: 0.00000000000000000000000000064314000578826005
374374
dec[c,2,14]: 2147483647
375-
dec[a,2,14]:
376-
dec[s,2,14]:
377-
dec[m,2,14]:
378-
dec[d,2,14]: 0.00000000000000000000000000064314000578826005
375+
dec[a,2,14]: 7654321.0
376+
dec[s,2,14]: 7654321.0
377+
dec[m,2,14]: 7654321.0
378+
dec[d,2,14]: 7654321.0
379379
dec[c,3,0]: -1
380380
(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
381381
dec[s,3,0]:
@@ -447,10 +447,10 @@ dec[s,3,13]: -1234567890123456789012345675.47
447447
dec[m,3,13]:
448448
dec[d,3,13]: 0.0000000000000000000000000027864000250776002
449449
dec[c,3,14]: 2147483647
450-
dec[a,3,14]: 1234567890123456789012345682.35
451-
dec[s,3,14]: -1234567890123456789012345675.47
452-
dec[m,3,14]:
453-
dec[d,3,14]: 0.0000000000000000000000000027864000250776002
450+
dec[a,3,14]: 7654321.0
451+
dec[s,3,14]: 7654321.0
452+
dec[m,3,14]: 7654321.0
453+
dec[d,3,14]: 7654321.0
454454
dec[c,4,0]: -1
455455
(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
456456
dec[s,4,0]:
@@ -522,10 +522,10 @@ dec[s,4,13]: -1233975400123456789012345678.91
522522
dec[m,4,13]:
523523
dec[d,4,13]: 0.00047991690431925214
524524
dec[c,4,14]: 2147483647
525-
dec[a,4,14]: 1235160380123456789012345678.91
526-
dec[s,4,14]: -1233975400123456789012345678.91
527-
dec[m,4,14]:
528-
dec[d,4,14]: 0.00047991690431925214
525+
dec[a,4,14]: 7654321.0
526+
dec[s,4,14]: 7654321.0
527+
dec[m,4,14]: 7654321.0
528+
dec[d,4,14]: 7654321.0
529529
dec[c,5,0]: -1
530530
(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
531531
dec[s,5,0]:
@@ -597,10 +597,10 @@ dec[s,5,13]: -1234567890123456789012674078.91
597597
dec[m,5,13]:
598598
dec[d,5,13]: -0.00000000000000000000026600400239403602
599599
dec[c,5,14]: 2147483647
600-
dec[a,5,14]: 1234567890123456789012017278.91
601-
dec[s,5,14]: -1234567890123456789012674078.91
602-
dec[m,5,14]:
603-
dec[d,5,14]: -0.00000000000000000000026600400239403602
600+
dec[a,5,14]: 7654321.0
601+
dec[s,5,14]: 7654321.0
602+
dec[m,5,14]: 7654321.0
603+
dec[d,5,14]: 7654321.0
604604
dec[c,6,0]: -1
605605
(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
606606
dec[s,6,0]:
@@ -672,10 +672,10 @@ dec[s,6,13]:
672672
dec[m,6,13]: *
673673
dec[d,6,13]: *
674674
dec[c,6,14]: 2147483647
675-
dec[a,6,14]:
676-
dec[s,6,14]:
677-
dec[m,6,14]: *
678-
dec[d,6,14]: *
675+
dec[a,6,14]: 7654321.0
676+
dec[s,6,14]: 7654321.0
677+
dec[m,6,14]: 7654321.0
678+
dec[d,6,14]: 7654321.0
679679
dec[c,7,0]: -1
680680
(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
681681
dec[s,7,0]:
@@ -747,10 +747,10 @@ dec[s,7,13]:
747747
dec[m,7,13]: 1234567890123456789012345.67891
748748
dec[d,7,13]: 0.00000000000000000000000000000081000000729000007
749749
dec[c,7,14]: 2147483647
750-
dec[a,7,14]:
751-
dec[s,7,14]:
752-
dec[m,7,14]: 1234567890123456789012345.67891
753-
dec[d,7,14]: 0.00000000000000000000000000000081000000729000007
750+
dec[a,7,14]: 7654321.0
751+
dec[s,7,14]: 7654321.0
752+
dec[m,7,14]: 7654321.0
753+
dec[d,7,14]: 7654321.0
754754
dec[c,8,0]: -1
755755
dec[a,8,0]: *
756756
dec[s,8,0]: *
@@ -822,10 +822,10 @@ dec[s,8,13]: -1234567890123456789012345678.91
822822
dec[m,8,13]: 0.000
823823
dec[d,8,13]: 0
824824
dec[c,8,14]: 2147483647
825-
dec[a,8,14]: 1234567890123456789012345678.91
826-
dec[s,8,14]: -1234567890123456789012345678.91
827-
dec[m,8,14]: 0.000
828-
dec[d,8,14]: 0
825+
dec[a,8,14]: 7654321.0
826+
dec[s,8,14]: 7654321.0
827+
dec[m,8,14]: 7654321.0
828+
dec[d,8,14]: 7654321.0
829829
dec[c,9,0]: -1
830830
(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
831831
dec[s,9,0]:
@@ -897,10 +897,10 @@ dec[s,9,13]:
897897
dec[m,9,13]:
898898
dec[d,9,13]: -0.000000000000000000000000000000047991690431925214
899899
dec[c,9,14]: 2147483647
900-
dec[a,9,14]:
901-
dec[s,9,14]:
902-
dec[m,9,14]:
903-
dec[d,9,14]: -0.000000000000000000000000000000047991690431925214
900+
dec[a,9,14]: 7654321.0
901+
dec[s,9,14]: 7654321.0
902+
dec[m,9,14]: 7654321.0
903+
dec[d,9,14]: 7654321.0
904904
dec[c,10,0]: -1
905905
(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
906906
dec[s,10,0]:
@@ -972,10 +972,10 @@ dec[s,10,13]:
972972
dec[m,10,13]:
973973
dec[d,10,13]: 0.0000000000000000000000000000026600400239403602
974974
dec[c,10,14]: 2147483647
975-
dec[a,10,14]:
976-
dec[s,10,14]:
977-
dec[m,10,14]:
978-
dec[d,10,14]: 0.0000000000000000000000000000026600400239403602
975+
dec[a,10,14]: 7654321.0
976+
dec[s,10,14]: 7654321.0
977+
dec[m,10,14]: 7654321.0
978+
dec[d,10,14]: 7654321.0
979979
dec[c,11,0]: -1
980980
(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
981981
dec[s,11,0]:
@@ -1047,10 +1047,10 @@ dec[s,11,13]:
10471047
dec[m,11,13]:
10481048
dec[d,11,13]: 0.00000000000000000000000000040500081364500732
10491049
dec[c,11,14]: 2147483647
1050-
dec[a,11,14]:
1051-
dec[s,11,14]:
1052-
dec[m,11,14]:
1053-
dec[d,11,14]: 0.00000000000000000000000000040500081364500732
1050+
dec[a,11,14]: 7654321.0
1051+
dec[s,11,14]: 7654321.0
1052+
dec[m,11,14]: 7654321.0
1053+
dec[d,11,14]: 7654321.0
10541054
dec[c,12,0]: -1
10551055
(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
10561056
dec[s,12,0]:
@@ -1122,10 +1122,10 @@ dec[s,12,13]:
11221122
dec[m,12,13]:
11231123
dec[d,12,13]: -0.00000000000000000000000000040500008464500076
11241124
dec[c,12,14]: 2147483647
1125-
dec[a,12,14]:
1126-
dec[s,12,14]:
1127-
dec[m,12,14]:
1128-
dec[d,12,14]: -0.00000000000000000000000000040500008464500076
1125+
dec[a,12,14]: 7654321.0
1126+
dec[s,12,14]: 7654321.0
1127+
dec[m,12,14]: 7654321.0
1128+
dec[d,12,14]: 7654321.0
11291129
dec[c,13,0]: -1
11301130
(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
11311131
dec[s,13,0]:
@@ -1197,85 +1197,85 @@ dec[s,13,13]: 0.00
11971197
dec[m,13,13]:
11981198
dec[d,13,13]: 1.00000000000000000
11991199
dec[c,13,14]: 2147483647
1200-
dec[a,13,14]: 2469135780246913578024691357.82
1201-
dec[s,13,14]: 0.00
1202-
dec[m,13,14]:
1203-
dec[d,13,14]: 1.00000000000000000
1200+
dec[a,13,14]: 7654321.0
1201+
dec[s,13,14]: 7654321.0
1202+
dec[m,13,14]: 7654321.0
1203+
dec[d,13,14]: 7654321.0
12041204
dec[c,14,0]: 2147483647
1205-
dec[a,14,0]: 2469135780246913578024691357.82
1206-
dec[s,14,0]: 0.00
1207-
dec[m,14,0]:
1208-
dec[d,14,0]: 1.00000000000000000
1205+
dec[a,14,0]: 7654321.0
1206+
dec[s,14,0]: 7654321.0
1207+
dec[m,14,0]: 7654321.0
1208+
dec[d,14,0]: 7654321.0
12091209
dec[c,14,1]: 2147483647
1210-
dec[a,14,1]: 2469135780246913578024691357.82
1211-
dec[s,14,1]: 0.00
1212-
dec[m,14,1]:
1213-
dec[d,14,1]: 1.00000000000000000
1210+
dec[a,14,1]: 7654321.0
1211+
dec[s,14,1]: 7654321.0
1212+
dec[m,14,1]: 7654321.0
1213+
dec[d,14,1]: 7654321.0
12141214
dec[c,14,2]: 2147483647
1215-
dec[a,14,2]: 2469135780246913578024691357.82
1216-
dec[s,14,2]: 0.00
1217-
dec[m,14,2]:
1218-
dec[d,14,2]: 1.00000000000000000
1215+
dec[a,14,2]: 7654321.0
1216+
dec[s,14,2]: 7654321.0
1217+
dec[m,14,2]: 7654321.0
1218+
dec[d,14,2]: 7654321.0
12191219
dec[c,14,3]: 2147483647
1220-
dec[a,14,3]: 2469135780246913578024691357.82
1221-
dec[s,14,3]: 0.00
1222-
dec[m,14,3]:
1223-
dec[d,14,3]: 1.00000000000000000
1220+
dec[a,14,3]: 7654321.0
1221+
dec[s,14,3]: 7654321.0
1222+
dec[m,14,3]: 7654321.0
1223+
dec[d,14,3]: 7654321.0
12241224
dec[c,14,4]: 2147483647
1225-
dec[a,14,4]: 2469135780246913578024691357.82
1226-
dec[s,14,4]: 0.00
1227-
dec[m,14,4]:
1228-
dec[d,14,4]: 1.00000000000000000
1225+
dec[a,14,4]: 7654321.0
1226+
dec[s,14,4]: 7654321.0
1227+
dec[m,14,4]: 7654321.0
1228+
dec[d,14,4]: 7654321.0
12291229
dec[c,14,5]: 2147483647
1230-
dec[a,14,5]: 2469135780246913578024691357.82
1231-
dec[s,14,5]: 0.00
1232-
dec[m,14,5]:
1233-
dec[d,14,5]: 1.00000000000000000
1230+
dec[a,14,5]: 7654321.0
1231+
dec[s,14,5]: 7654321.0
1232+
dec[m,14,5]: 7654321.0
1233+
dec[d,14,5]: 7654321.0
12341234
dec[c,14,6]: 2147483647
1235-
dec[a,14,6]: 2469135780246913578024691357.82
1236-
dec[s,14,6]: 0.00
1237-
dec[m,14,6]:
1238-
dec[d,14,6]: 1.00000000000000000
1235+
dec[a,14,6]: 7654321.0
1236+
dec[s,14,6]: 7654321.0
1237+
dec[m,14,6]: 7654321.0
1238+
dec[d,14,6]: 7654321.0
12391239
dec[c,14,7]: 2147483647
1240-
dec[a,14,7]: 2469135780246913578024691357.82
1241-
dec[s,14,7]: 0.00
1242-
dec[m,14,7]:
1243-
dec[d,14,7]: 1.00000000000000000
1240+
dec[a,14,7]: 7654321.0
1241+
dec[s,14,7]: 7654321.0
1242+
dec[m,14,7]: 7654321.0
1243+
dec[d,14,7]: 7654321.0
12441244
dec[c,14,8]: 2147483647
1245-
dec[a,14,8]: 2469135780246913578024691357.82
1246-
dec[s,14,8]: 0.00
1247-
dec[m,14,8]:
1248-
dec[d,14,8]: 1.00000000000000000
1245+
dec[a,14,8]: 7654321.0
1246+
dec[s,14,8]: 7654321.0
1247+
dec[m,14,8]: 7654321.0
1248+
dec[d,14,8]: 7654321.0
12491249
dec[c,14,9]: 2147483647
1250-
dec[a,14,9]: 2469135780246913578024691357.82
1251-
dec[s,14,9]: 0.00
1252-
dec[m,14,9]:
1253-
dec[d,14,9]: 1.00000000000000000
1250+
dec[a,14,9]: 7654321.0
1251+
dec[s,14,9]: 7654321.0
1252+
dec[m,14,9]: 7654321.0
1253+
dec[d,14,9]: 7654321.0
12541254
dec[c,14,10]: 2147483647
1255-
dec[a,14,10]: 2469135780246913578024691357.82
1256-
dec[s,14,10]: 0.00
1257-
dec[m,14,10]:
1258-
dec[d,14,10]: 1.00000000000000000
1255+
dec[a,14,10]: 7654321.0
1256+
dec[s,14,10]: 7654321.0
1257+
dec[m,14,10]: 7654321.0
1258+
dec[d,14,10]: 7654321.0
12591259
dec[c,14,11]: 2147483647
1260-
dec[a,14,11]: 2469135780246913578024691357.82
1261-
dec[s,14,11]: 0.00
1262-
dec[m,14,11]:
1263-
dec[d,14,11]: 1.00000000000000000
1260+
dec[a,14,11]: 7654321.0
1261+
dec[s,14,11]: 7654321.0
1262+
dec[m,14,11]: 7654321.0
1263+
dec[d,14,11]: 7654321.0
12641264
dec[c,14,12]: 2147483647
1265-
dec[a,14,12]: 2469135780246913578024691357.82
1266-
dec[s,14,12]: 0.00
1267-
dec[m,14,12]:
1268-
dec[d,14,12]: 1.00000000000000000
1265+
dec[a,14,12]: 7654321.0
1266+
dec[s,14,12]: 7654321.0
1267+
dec[m,14,12]: 7654321.0
1268+
dec[d,14,12]: 7654321.0
12691269
dec[c,14,13]: 2147483647
1270-
dec[a,14,13]: 2469135780246913578024691357.82
1271-
dec[s,14,13]: 0.00
1272-
dec[m,14,13]:
1273-
dec[d,14,13]: 1.00000000000000000
1270+
dec[a,14,13]: 7654321.0
1271+
dec[s,14,13]: 7654321.0
1272+
dec[m,14,13]: 7654321.0
1273+
dec[d,14,13]: 7654321.0
12741274
dec[c,14,14]: 2147483647
1275-
dec[a,14,14]: 2469135780246913578024691357.82
1276-
dec[s,14,14]: 0.00
1277-
dec[m,14,14]:
1278-
dec[d,14,14]: 1.00000000000000000
1275+
dec[a,14,14]: 7654321.0
1276+
dec[s,14,14]: 7654321.0
1277+
dec[m,14,14]: 7654321.0
1278+
dec[d,14,14]: 7654321.0
12791279
0: *
12801280
1: -2
12811281
2: 0.794

0 commit comments

Comments
 (0)