Skip to content

Commit 4723b2b

Browse files
committed
Be more careful about the difference between signed and unsigned ints.
Bug is revealed by OID regress test on 64-bit platforms.
1 parent eedfac6 commit 4723b2b

File tree

1 file changed

+13
-14
lines changed

1 file changed

+13
-14
lines changed

src/backend/port/snprintf.c

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ typedef unsigned long ulong_long;
7474
* causing nast effects.
7575
**************************************************************/
7676

77-
/*static char _id[] = "$Id: snprintf.c,v 1.28 2000/12/03 20:45:34 tgl Exp $";*/
77+
/*static char _id[] = "$Id: snprintf.c,v 1.29 2000/12/30 19:17:47 tgl Exp $";*/
7878
static char *end;
7979
static int SnprfOverflow;
8080

@@ -192,12 +192,12 @@ dopr(char *buffer, const char *format, va_list args)
192192
if (longflag)
193193
{
194194
if (longlongflag)
195-
value = va_arg(args, long_long);
195+
value = va_arg(args, ulong_long);
196196
else
197-
value = va_arg(args, long);
197+
value = va_arg(args, unsigned long);
198198
}
199199
else
200-
value = va_arg(args, int);
200+
value = va_arg(args, unsigned int);
201201
fmtnum(value, 10, 0, ljust, len, zpad);
202202
break;
203203
case 'o':
@@ -206,12 +206,12 @@ dopr(char *buffer, const char *format, va_list args)
206206
if (longflag)
207207
{
208208
if (longlongflag)
209-
value = va_arg(args, long_long);
209+
value = va_arg(args, ulong_long);
210210
else
211-
value = va_arg(args, long);
211+
value = va_arg(args, unsigned long);
212212
}
213213
else
214-
value = va_arg(args, int);
214+
value = va_arg(args, unsigned int);
215215
fmtnum(value, 8, 0, ljust, len, zpad);
216216
break;
217217
case 'd':
@@ -225,31 +225,30 @@ dopr(char *buffer, const char *format, va_list args)
225225
}
226226
else
227227
value = va_arg(args, int);
228-
229228
fmtnum(value, 10, 1, ljust, len, zpad);
230229
break;
231230
case 'x':
232231
if (longflag)
233232
{
234233
if (longlongflag)
235-
value = va_arg(args, long_long);
234+
value = va_arg(args, ulong_long);
236235
else
237-
value = va_arg(args, long);
236+
value = va_arg(args, unsigned long);
238237
}
239238
else
240-
value = va_arg(args, int);
239+
value = va_arg(args, unsigned int);
241240
fmtnum(value, 16, 0, ljust, len, zpad);
242241
break;
243242
case 'X':
244243
if (longflag)
245244
{
246245
if (longlongflag)
247-
value = va_arg(args, long_long);
246+
value = va_arg(args, ulong_long);
248247
else
249-
value = va_arg(args, long);
248+
value = va_arg(args, unsigned long);
250249
}
251250
else
252-
value = va_arg(args, int);
251+
value = va_arg(args, unsigned int);
253252
fmtnum(value, -16, 0, ljust, len, zpad);
254253
break;
255254
case 's':

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy