Skip to content

Commit

Permalink
Use standard 64bit signed int type
Browse files Browse the repository at this point in the history
  • Loading branch information
Girgias committed Jul 15, 2021
1 parent 9778554 commit 02e48d9
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 41 deletions.
34 changes: 17 additions & 17 deletions main/snprintf.c
Original file line number Diff line number Diff line change
Expand Up @@ -308,7 +308,7 @@ PHPAPI char *php_gcvt(double value, int ndigit, char dec_point, char exponent, c
* is declared as buf[ 100 ], buf_end should be &buf[ 100 ])
*/
/* char * ap_php_conv_10() {{{ */
PHPAPI char * ap_php_conv_10(register wide_int num, register bool is_unsigned,
PHPAPI char * ap_php_conv_10(register int64_t num, register bool is_unsigned,
register bool * is_negative, char *buf_end, register size_t *len)
{
register char *p = buf_end;
Expand All @@ -330,7 +330,7 @@ PHPAPI char * ap_php_conv_10(register wide_int num, register bool is_unsigned,
* d. add 1
*/
if (*is_negative) {
wide_int t = num + 1;
int64_t t = num + 1;
magnitude = ((uint64_t) - t) + 1;
} else {
magnitude = (uint64_t) num;
Expand Down Expand Up @@ -441,7 +441,7 @@ PHPAPI char * php_conv_fp(register char format, register double num,
*s++ = format; /* either e or E */
decimal_point--;
if (decimal_point != 0) {
p = ap_php_conv_10((wide_int) decimal_point, false, &exponent_is_negative, &temp[EXPONENT_LENGTH], &t_len);
p = ap_php_conv_10((int64_t) decimal_point, false, &exponent_is_negative, &temp[EXPONENT_LENGTH], &t_len);
*s++ = exponent_is_negative ? '-' : '+';

/*
Expand Down Expand Up @@ -587,7 +587,7 @@ static size_t format_converter(register buffy * odp, const char *fmt, va_list ap
char prefix_char;

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

char num_buf[NUM_BUF_SIZE];
Expand Down Expand Up @@ -776,29 +776,29 @@ static size_t format_converter(register buffy * odp, const char *fmt, va_list ap
case 'u':
switch(modifier) {
default:
i_num = (wide_int) va_arg(ap, unsigned int);
i_num = (int64_t) va_arg(ap, unsigned int);
break;
case LM_LONG_DOUBLE:
goto fmt_error;
case LM_LONG:
i_num = (wide_int) va_arg(ap, unsigned long int);
i_num = (int64_t) va_arg(ap, unsigned long int);
break;
case LM_SIZE_T:
i_num = (wide_int) va_arg(ap, size_t);
i_num = (int64_t) va_arg(ap, size_t);
break;
#if SIZEOF_LONG_LONG
case LM_LONG_LONG:
i_num = (wide_int) va_arg(ap, unsigned long long int);
i_num = (int64_t) va_arg(ap, unsigned long long int);
break;
#endif
#if SIZEOF_INTMAX_T
case LM_INTMAX_T:
i_num = (wide_int) va_arg(ap, uintmax_t);
i_num = (int64_t) va_arg(ap, uintmax_t);
break;
#endif
#if SIZEOF_PTRDIFF_T
case LM_PTRDIFF_T:
i_num = (wide_int) va_arg(ap, ptrdiff_t);
i_num = (int64_t) va_arg(ap, ptrdiff_t);
break;
#endif
}
Expand All @@ -815,33 +815,33 @@ static size_t format_converter(register buffy * odp, const char *fmt, va_list ap
if ((*fmt) != 'u') {
switch(modifier) {
default:
i_num = (wide_int) va_arg(ap, int);
i_num = (int64_t) va_arg(ap, int);
break;
case LM_LONG_DOUBLE:
goto fmt_error;
case LM_LONG:
i_num = (wide_int) va_arg(ap, long int);
i_num = (int64_t) va_arg(ap, long int);
break;
case LM_SIZE_T:
#if SIZEOF_SSIZE_T
i_num = (wide_int) va_arg(ap, ssize_t);
i_num = (int64_t) va_arg(ap, ssize_t);
#else
i_num = (wide_int) va_arg(ap, size_t);
i_num = (int64_t) va_arg(ap, size_t);
#endif
break;
#if SIZEOF_LONG_LONG
case LM_LONG_LONG:
i_num = (wide_int) va_arg(ap, wide_int);
i_num = (int64_t) va_arg(ap, long long int);
break;
#endif
#if SIZEOF_INTMAX_T
case LM_INTMAX_T:
i_num = (wide_int) va_arg(ap, intmax_t);
i_num = (int64_t) va_arg(ap, intmax_t);
break;
#endif
#if SIZEOF_PTRDIFF_T
case LM_PTRDIFF_T:
i_num = (wide_int) va_arg(ap, ptrdiff_t);
i_num = (int64_t) va_arg(ap, ptrdiff_t);
break;
#endif
}
Expand Down
11 changes: 1 addition & 10 deletions main/snprintf.h
Original file line number Diff line number Diff line change
Expand Up @@ -126,16 +126,7 @@ typedef enum {
LM_LONG_DOUBLE,
} length_modifier_e;

#ifdef PHP_WIN32
# define WIDE_INT __int64
#elif SIZEOF_LONG_LONG
# define WIDE_INT long long
#else
# define WIDE_INT long
#endif
typedef WIDE_INT wide_int;

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

PHPAPI char * ap_php_conv_p2(uint64_t num, int nbits,
Expand Down
28 changes: 14 additions & 14 deletions main/spprintf.c
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,7 @@ static void xbuf_format_converter(void *xbuf, bool is_char, const char *fmt, va_
char prefix_char;

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

char num_buf[NUM_BUF_SIZE];
Expand Down Expand Up @@ -383,29 +383,29 @@ static void xbuf_format_converter(void *xbuf, bool is_char, const char *fmt, va_
case 'u':
switch(modifier) {
default:
i_num = (wide_int) va_arg(ap, unsigned int);
i_num = (int64_t) va_arg(ap, unsigned int);
break;
case LM_LONG_DOUBLE:
goto fmt_error;
case LM_LONG:
i_num = (wide_int) va_arg(ap, unsigned long int);
i_num = (int64_t) va_arg(ap, unsigned long int);
break;
case LM_SIZE_T:
i_num = (wide_int) va_arg(ap, size_t);
i_num = (int64_t) va_arg(ap, size_t);
break;
#if SIZEOF_LONG_LONG
case LM_LONG_LONG:
i_num = (wide_int) va_arg(ap, unsigned long long int);
i_num = (int64_t) va_arg(ap, unsigned long long int);
break;
#endif
#if SIZEOF_INTMAX_T
case LM_INTMAX_T:
i_num = (wide_int) va_arg(ap, uintmax_t);
i_num = (int64_t) va_arg(ap, uintmax_t);
break;
#endif
#if SIZEOF_PTRDIFF_T
case LM_PTRDIFF_T:
i_num = (wide_int) va_arg(ap, ptrdiff_t);
i_num = (int64_t) va_arg(ap, ptrdiff_t);
break;
#endif
}
Expand All @@ -422,33 +422,33 @@ static void xbuf_format_converter(void *xbuf, bool is_char, const char *fmt, va_
if ((*fmt) != 'u') {
switch(modifier) {
default:
i_num = (wide_int) va_arg(ap, int);
i_num = (int64_t) va_arg(ap, int);
break;
case LM_LONG_DOUBLE:
goto fmt_error;
case LM_LONG:
i_num = (wide_int) va_arg(ap, long int);
i_num = (int64_t) va_arg(ap, long int);
break;
case LM_SIZE_T:
#if SIZEOF_SSIZE_T
i_num = (wide_int) va_arg(ap, ssize_t);
i_num = (int64_t) va_arg(ap, ssize_t);
#else
i_num = (wide_int) va_arg(ap, size_t);
i_num = (int64_t) va_arg(ap, size_t);
#endif
break;
#if SIZEOF_LONG_LONG
case LM_LONG_LONG:
i_num = (wide_int) va_arg(ap, wide_int);
i_num = (int64_t) va_arg(ap, long long int);
break;
#endif
#if SIZEOF_INTMAX_T
case LM_INTMAX_T:
i_num = (wide_int) va_arg(ap, intmax_t);
i_num = (int64_t) va_arg(ap, intmax_t);
break;
#endif
#if SIZEOF_PTRDIFF_T
case LM_PTRDIFF_T:
i_num = (wide_int) va_arg(ap, ptrdiff_t);
i_num = (int64_t) va_arg(ap, ptrdiff_t);
break;
#endif
}
Expand Down

0 comments on commit 02e48d9

Please sign in to comment.