Skip to content

Commit

Permalink
Use standard 64bit unsigned int type
Browse files Browse the repository at this point in the history
  • Loading branch information
Girgias committed Jul 15, 2021
1 parent b901c05 commit 9778554
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 40 deletions.
44 changes: 22 additions & 22 deletions main/snprintf.c
Original file line number Diff line number Diff line change
Expand Up @@ -312,10 +312,10 @@ PHPAPI char * ap_php_conv_10(register wide_int num, register bool is_unsigned,
register bool * is_negative, char *buf_end, register size_t *len)
{
register char *p = buf_end;
register u_wide_int magnitude;
register uint64_t magnitude;

if (is_unsigned) {
magnitude = (u_wide_int) num;
magnitude = (uint64_t) num;
*is_negative = false;
} else {
*is_negative = (num < 0);
Expand All @@ -331,17 +331,17 @@ PHPAPI char * ap_php_conv_10(register wide_int num, register bool is_unsigned,
*/
if (*is_negative) {
wide_int t = num + 1;
magnitude = ((u_wide_int) - t) + 1;
magnitude = ((uint64_t) - t) + 1;
} else {
magnitude = (u_wide_int) num;
magnitude = (uint64_t) num;
}
}

/*
* We use a do-while loop so that we write at least 1 digit
*/
do {
register u_wide_int new_magnitude = magnitude / 10;
register uint64_t new_magnitude = magnitude / 10;

*--p = (char)(magnitude - new_magnitude * 10 + '0');
magnitude = new_magnitude;
Expand Down Expand Up @@ -471,7 +471,7 @@ PHPAPI char * php_conv_fp(register char format, register double num,
* which is a pointer to the END of the buffer + 1 (i.e. if the buffer
* is declared as buf[ 100 ], buf_end should be &buf[ 100 ])
*/
PHPAPI char * ap_php_conv_p2(register u_wide_int num, register int nbits, char format, char *buf_end, register size_t *len) /* {{{ */
PHPAPI char * ap_php_conv_p2(register uint64_t num, register int nbits, char format, char *buf_end, register size_t *len) /* {{{ */
{
register int mask = (1 << nbits) - 1;
register char *p = buf_end;
Expand Down Expand Up @@ -588,7 +588,7 @@ static size_t format_converter(register buffy * odp, const char *fmt, va_list ap

double fp_num;
wide_int i_num = (wide_int) 0;
u_wide_int ui_num;
uint64_t ui_num;

char num_buf[NUM_BUF_SIZE];
char char_buf[2]; /* for printing %% and %<unknown> */
Expand Down Expand Up @@ -788,7 +788,7 @@ static size_t format_converter(register buffy * odp, const char *fmt, va_list ap
break;
#if SIZEOF_LONG_LONG
case LM_LONG_LONG:
i_num = (wide_int) va_arg(ap, u_wide_int);
i_num = (wide_int) va_arg(ap, unsigned long long int);
break;
#endif
#if SIZEOF_INTMAX_T
Expand Down Expand Up @@ -865,29 +865,29 @@ static size_t format_converter(register buffy * odp, const char *fmt, va_list ap
case 'o':
switch(modifier) {
default:
ui_num = (u_wide_int) va_arg(ap, unsigned int);
ui_num = (uint64_t) va_arg(ap, unsigned int);
break;
case LM_LONG_DOUBLE:
goto fmt_error;
case LM_LONG:
ui_num = (u_wide_int) va_arg(ap, unsigned long int);
ui_num = (uint64_t) va_arg(ap, unsigned long int);
break;
case LM_SIZE_T:
ui_num = (u_wide_int) va_arg(ap, size_t);
ui_num = (uint64_t) va_arg(ap, size_t);
break;
#if SIZEOF_LONG_LONG
case LM_LONG_LONG:
ui_num = (u_wide_int) va_arg(ap, u_wide_int);
ui_num = (uint64_t) va_arg(ap, unsigned long long int);
break;
#endif
#if SIZEOF_INTMAX_T
case LM_INTMAX_T:
ui_num = (u_wide_int) va_arg(ap, uintmax_t);
ui_num = (uint64_t) va_arg(ap, uintmax_t);
break;
#endif
#if SIZEOF_PTRDIFF_T
case LM_PTRDIFF_T:
ui_num = (u_wide_int) va_arg(ap, ptrdiff_t);
ui_num = (uint64_t) va_arg(ap, ptrdiff_t);
break;
#endif
}
Expand All @@ -904,29 +904,29 @@ static size_t format_converter(register buffy * odp, const char *fmt, va_list ap
case 'X':
switch(modifier) {
default:
ui_num = (u_wide_int) va_arg(ap, unsigned int);
ui_num = (uint64_t) va_arg(ap, unsigned int);
break;
case LM_LONG_DOUBLE:
goto fmt_error;
case LM_LONG:
ui_num = (u_wide_int) va_arg(ap, unsigned long int);
ui_num = (uint64_t) va_arg(ap, unsigned long int);
break;
case LM_SIZE_T:
ui_num = (u_wide_int) va_arg(ap, size_t);
ui_num = (uint64_t) va_arg(ap, size_t);
break;
#if SIZEOF_LONG_LONG
case LM_LONG_LONG:
ui_num = (u_wide_int) va_arg(ap, u_wide_int);
ui_num = (uint64_t) va_arg(ap, unsigned long long int);
break;
#endif
#if SIZEOF_INTMAX_T
case LM_INTMAX_T:
ui_num = (u_wide_int) va_arg(ap, uintmax_t);
ui_num = (uint64_t) va_arg(ap, uintmax_t);
break;
#endif
#if SIZEOF_PTRDIFF_T
case LM_PTRDIFF_T:
ui_num = (u_wide_int) va_arg(ap, ptrdiff_t);
ui_num = (uint64_t) va_arg(ap, ptrdiff_t);
break;
#endif
}
Expand Down Expand Up @@ -1089,8 +1089,8 @@ static size_t format_converter(register buffy * odp, const char *fmt, va_list ap
* we print "%p" to indicate that we don't handle "%p".
*/
case 'p':
if (sizeof(char *) <= sizeof(u_wide_int)) {
ui_num = (u_wide_int)((size_t) va_arg(ap, char *));
if (sizeof(char *) <= sizeof(uint64_t)) {
ui_num = (uint64_t)((size_t) va_arg(ap, char *));
s = ap_php_conv_p2(ui_num, 4, 'x',
&num_buf[NUM_BUF_SIZE], &s_len);
if (ui_num != 0) {
Expand Down
3 changes: 1 addition & 2 deletions main/snprintf.h
Original file line number Diff line number Diff line change
Expand Up @@ -134,12 +134,11 @@ typedef enum {
# define WIDE_INT long
#endif
typedef WIDE_INT wide_int;
typedef unsigned WIDE_INT u_wide_int;

PHPAPI char * ap_php_conv_10(wide_int num, bool is_unsigned,
bool * is_negative, char *buf_end, size_t *len);

PHPAPI char * ap_php_conv_p2(u_wide_int num, int nbits,
PHPAPI char * ap_php_conv_p2(uint64_t num, int nbits,
char format, char *buf_end, size_t *len);

/* The maximum precision that's allowed for float conversion. Does not include
Expand Down
32 changes: 16 additions & 16 deletions main/spprintf.c
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,7 @@ static void xbuf_format_converter(void *xbuf, bool is_char, const char *fmt, va_

double fp_num;
wide_int i_num = (wide_int) 0;
u_wide_int ui_num = (u_wide_int) 0;
uint64_t ui_num = (uint64_t) 0;

char num_buf[NUM_BUF_SIZE];
char char_buf[2]; /* for printing %% and %<unknown> */
Expand Down Expand Up @@ -395,7 +395,7 @@ static void xbuf_format_converter(void *xbuf, bool is_char, const char *fmt, va_
break;
#if SIZEOF_LONG_LONG
case LM_LONG_LONG:
i_num = (wide_int) va_arg(ap, u_wide_int);
i_num = (wide_int) va_arg(ap, unsigned long long int);
break;
#endif
#if SIZEOF_INTMAX_T
Expand Down Expand Up @@ -471,29 +471,29 @@ static void xbuf_format_converter(void *xbuf, bool is_char, const char *fmt, va_
case 'o':
switch(modifier) {
default:
ui_num = (u_wide_int) va_arg(ap, unsigned int);
ui_num = (uint64_t) va_arg(ap, unsigned int);
break;
case LM_LONG_DOUBLE:
goto fmt_error;
case LM_LONG:
ui_num = (u_wide_int) va_arg(ap, unsigned long int);
ui_num = (uint64_t) va_arg(ap, unsigned long int);
break;
case LM_SIZE_T:
ui_num = (u_wide_int) va_arg(ap, size_t);
ui_num = (uint64_t) va_arg(ap, size_t);
break;
#if SIZEOF_LONG_LONG
case LM_LONG_LONG:
ui_num = (u_wide_int) va_arg(ap, u_wide_int);
ui_num = (uint64_t) va_arg(ap, unsigned long long int);
break;
#endif
#if SIZEOF_INTMAX_T
case LM_INTMAX_T:
ui_num = (u_wide_int) va_arg(ap, uintmax_t);
ui_num = (uint64_t) va_arg(ap, uintmax_t);
break;
#endif
#if SIZEOF_PTRDIFF_T
case LM_PTRDIFF_T:
ui_num = (u_wide_int) va_arg(ap, ptrdiff_t);
ui_num = (uint64_t) va_arg(ap, ptrdiff_t);
break;
#endif
}
Expand All @@ -511,29 +511,29 @@ static void xbuf_format_converter(void *xbuf, bool is_char, const char *fmt, va_
case 'X':
switch(modifier) {
default:
ui_num = (u_wide_int) va_arg(ap, unsigned int);
ui_num = (uint64_t) va_arg(ap, unsigned int);
break;
case LM_LONG_DOUBLE:
goto fmt_error;
case LM_LONG:
ui_num = (u_wide_int) va_arg(ap, unsigned long int);
ui_num = (uint64_t) va_arg(ap, unsigned long int);
break;
case LM_SIZE_T:
ui_num = (u_wide_int) va_arg(ap, size_t);
ui_num = (uint64_t) va_arg(ap, size_t);
break;
#if SIZEOF_LONG_LONG
case LM_LONG_LONG:
ui_num = (u_wide_int) va_arg(ap, u_wide_int);
ui_num = (uint64_t) va_arg(ap, unsigned long long int);
break;
#endif
#if SIZEOF_INTMAX_T
case LM_INTMAX_T:
ui_num = (u_wide_int) va_arg(ap, uintmax_t);
ui_num = (uint64_t) va_arg(ap, uintmax_t);
break;
#endif
#if SIZEOF_PTRDIFF_T
case LM_PTRDIFF_T:
ui_num = (u_wide_int) va_arg(ap, ptrdiff_t);
ui_num = (uint64_t) va_arg(ap, ptrdiff_t);
break;
#endif
}
Expand Down Expand Up @@ -695,8 +695,8 @@ static void xbuf_format_converter(void *xbuf, bool is_char, const char *fmt, va_
* we print "%p" to indicate that we don't handle "%p".
*/
case 'p':
if (sizeof(char *) <= sizeof(u_wide_int)) {
ui_num = (u_wide_int)((size_t) va_arg(ap, char *));
if (sizeof(char *) <= sizeof(uint64_t)) {
ui_num = (uint64_t)((size_t) va_arg(ap, char *));
s = ap_php_conv_p2(ui_num, 4, 'x',
&num_buf[NUM_BUF_SIZE], &s_len);
if (ui_num != 0) {
Expand Down

0 comments on commit 9778554

Please sign in to comment.