helly           Sun Sep 14 05:12:55 2003 EDT

  Modified files:              
    /php-src    configure.in 
    /php-src/main       config.w32.h snprintf.c snprintf.h spprintf.c 
  Log:
  - Add length modifiers(ll, j, t, h, hh)
  # Still missing formats (%a, %A)
  # Still missing modifier (l) in (%lc, %ls)
  # Still missing modifier (L) in (%La, %LA, %Le, %LE, %Lf, %LF, %Lg, %LG)
  # C99 requires any conversion to be able to produce at least 4095 
  # characters. Implementation only allows less then 512.
  #
  # Only inside ext/mbstring etc. we could use %lc and %ls. And none of the 
  # rest should affect us until we stay with double and avoid long double.
  
  
Index: php-src/configure.in
diff -u php-src/configure.in:1.464 php-src/configure.in:1.465
--- php-src/configure.in:1.464  Mon Sep  8 09:15:22 2003
+++ php-src/configure.in        Sun Sep 14 05:12:54 2003
@@ -1,4 +1,4 @@
-dnl ## $Id: configure.in,v 1.464 2003/09/08 13:15:22 sniper Exp $ -*- sh -*-
+dnl ## $Id: configure.in,v 1.465 2003/09/14 09:12:54 helly Exp $ -*- sh -*-
 dnl ## Process this file with autoconf to produce a configure script.
 
 divert(1)
@@ -401,6 +401,12 @@
 PHP_STRUCT_FLOCK
 PHP_SOCKLEN_T
 
+AC_CHECK_SIZEOF(intmax_t, 0)
+AC_CHECK_SIZEOF(size_t, 8)
+AC_CHECK_SIZEOF(ssize_t, 8)
+AC_CHECK_SIZEOF(ptrdiff_t, 8)
+AC_CHECK_SIZEOF(long long, 8)
+AC_CHECK_SIZEOF(long long int, 8)
 AC_CHECK_SIZEOF(long, 8)
 AC_CHECK_SIZEOF(int, 4)
 
@@ -1166,7 +1172,8 @@
     zend_ini.c zend_qsort.c zend_multibyte.c zend_ts_hash.c zend_stream.c)
 
 if test -r "$abs_srcdir/Zend/zend_objects.c"; then
-  PHP_ADD_SOURCES(Zend, zend_objects.c zend_object_handlers.c zend_objects_API.c 
zend_mm.c zend_default_classes.c zend_reflection_api.c)
+  PHP_ADD_SOURCES(Zend, zend_objects.c zend_object_handlers.c zend_objects_API.c 
zend_mm.c \
+    zend_default_classes.c zend_reflection_api.c zend_interfaces.c)
 fi
 
 dnl Selectively disable optimization due to high RAM usage during
Index: php-src/main/config.w32.h
diff -u php-src/main/config.w32.h:1.77 php-src/main/config.w32.h:1.78
--- php-src/main/config.w32.h:1.77      Mon Aug 25 22:50:39 2003
+++ php-src/main/config.w32.h   Sun Sep 14 05:12:54 2003
@@ -2,7 +2,7 @@
        Build Configuration for Win32.
        This has only been tested with MS VisualC++ 6 (and later).
 
-       $Id: config.w32.h,v 1.77 2003/08/26 02:50:39 sniper Exp $
+       $Id: config.w32.h,v 1.78 2003/09/14 09:12:54 helly Exp $
 */
 
 /* Default PHP / PEAR directories */
@@ -167,7 +167,21 @@
 #define HAVE_CUSERID 0
 #undef HAVE_RINT
 #define HAVE_STRFTIME 1
+/* int and long are stll 32bit in 64bit compiles */
 #define SIZEOF_INT 4
+#define SIZEOF_LONG 4
+/* MSVC.6/NET don't allow 'long long' or know 'intmax_t' */
+#define SIZEOF_LONG_LONG_INT 0
+#define SIZEOF_LONG_LONG 0
+#define SIZEOF_INTMAX_T 0
+#define ssize_t ptrdiff_t
+#ifdef _WIN64
+# define SIZEOF_SIZE_T 8
+# define SIZEOF_PTRDIFF_T 8
+#else
+# define SIZEOF_SIZE_T 4
+# define SIZEOF_PTRDIFF_T 4
+#endif
 #define HAVE_GLOB
 #define PHP_SHLIB_SUFFIX "dll"
 #define HAVE_SQLDATASOURCES
Index: php-src/main/snprintf.c
diff -u php-src/main/snprintf.c:1.28 php-src/main/snprintf.c:1.29
--- php-src/main/snprintf.c:1.28        Sat Sep 13 12:49:24 2003
+++ php-src/main/snprintf.c     Sun Sep 14 05:12:54 2003
@@ -16,7 +16,7 @@
   +----------------------------------------------------------------------+
 */
 
-/* $Id: snprintf.c,v 1.28 2003/09/13 16:49:24 helly Exp $ */
+/* $Id: snprintf.c,v 1.29 2003/09/14 09:12:54 helly Exp $ */
 
 /* ====================================================================
  * Copyright (c) 1995-1998 The Apache Group.  All rights reserved.
@@ -75,6 +75,7 @@
 
 #include "php.h"
 
+#include <stddef.h>
 #include <stdio.h>
 #include <ctype.h>
 #include <sys/types.h>
@@ -577,8 +578,7 @@
        /*
         * Flag variables
         */
-       boolean_e is_long;
-       boolean_e is_size_t;
+       length_modifier_e modifier;
        boolean_e alternate_form;
        boolean_e print_sign;
        boolean_e print_blank;
@@ -669,17 +669,43 @@
                        /*
                         * Modifier check
                         */
-                       if (*fmt == 'l') {
-                               is_long = YES;
-                               is_size_t = NO;
-                               fmt++;
-                       } else if (*fmt == 'z') {
-                               is_size_t = YES;
-                               is_long = NO;
-                               fmt++;
-                       } else {
-                               is_size_t = NO;
-                               is_long = NO;
+                       switch (*fmt) {
+                               case 'l':
+                                       fmt++;
+#if SIZEOF_LONG_LONG
+                                       if (*fmt == 'l') {
+                                               fmt++;
+                                               modifier = LM_LONG_LONG;
+                                       } else
+#endif
+                                               modifier = LM_LONG;
+                                       break;
+                               case 'z':
+                                       modifier = LM_SIZE_T;
+                                       break;
+                               case 'j':
+#if SIZEOF_INTMAX_T
+                                       modifier = LM_INTMAX_T;
+#else
+                                       modifier = LM_SIZE_T;
+#endif
+                                       break;
+                               case 't':
+#if SIZEOF_PTRDIFF_T
+                                       modifier = LM_PTRDIFF_T;
+#else
+                                       modifier = LM_SIZE_T;
+#endif
+                                       break;
+                               case 'h':
+                                       fmt++;
+                                       if (*fmt == 'h') {
+                                               fmt++;
+                                       }
+                                       /* these are promoted to int, so no break */
+                               default:                                
+                                       modifier = LM_STD;
+                                       break;
                        }
 
                        /*
@@ -695,12 +721,32 @@
                         */
                        switch (*fmt) {
                                case 'u':
-                                       if (is_long)
-                                               i_num = va_arg(ap, u_wide_int);
-                                       else if (is_size_t)
-                                               i_num = (wide_int) va_arg(ap, size_t);
-                                       else
-                                               i_num = (wide_int) va_arg(ap, unsigned 
int);
+                                       switch(modifier) {
+                                               default:
+                                                       i_num = (wide_int) va_arg(ap, 
unsigned int);
+                                                       break;
+                                               case LM_LONG:
+                                                       i_num = (wide_int) va_arg(ap, 
unsigned long int);
+                                                       break;
+                                               case LM_SIZE_T:
+                                                       i_num = (wide_int) va_arg(ap, 
size_t);
+                                                       break;
+#if SIZEOF_LONG_LONG
+                                               case LM_LONG_LONG:
+                                                       i_num = (wide_int) va_arg(ap, 
u_wide_int);
+                                                       break;
+#endif
+#if SIZEOF_INTMAX_T
+                                               case LM_INTMAX_T:
+                                                       i_num = (wide_int) va_arg(ap, 
uintmax_t);
+                                                       break;
+#endif
+#if SIZEOF_PTRDIFF_T
+                                               case LM_PTRDIFF_T:
+                                                       i_num = (wide_int) va_arg(ap, 
ptrdiff_t);
+                                                       break;
+#endif
+                                       }
                                        /*
                                         * The rest also applies to other integer 
formats, so fall
                                         * into that case.
@@ -711,13 +757,37 @@
                                         * Get the arg if we haven't already.
                                         */
                                        if ((*fmt) != 'u') {
-                                               if (is_long)
-                                                       i_num = va_arg(ap, wide_int);
-                                               else if (is_size_t)
-                                                       i_num = (wide_int) va_arg(ap, 
size_t);
-                                               else
-                                                       i_num = (wide_int) va_arg(ap, 
int);
-                                       };
+                                               switch(modifier) {
+                                                       default:
+                                                               i_num = (wide_int) 
va_arg(ap, int);
+                                                               break;
+                                                       case LM_LONG:
+                                                               i_num = (wide_int) 
va_arg(ap, long int);
+                                                               break;
+                                                       case LM_SIZE_T:
+#if SIZEOF_SSIZE_T
+                                                               i_num = (wide_int) 
va_arg(ap, ssize_t);
+#else
+                                                               i_num = (wide_int) 
va_arg(ap, size_t);
+#endif
+                                                               break;
+#if SIZEOF_LONG_LONG
+                                                       case LM_LONG_LONG:
+                                                               i_num = (wide_int) 
va_arg(ap, wide_int);
+                                                               break;
+#endif
+#if SIZEOF_INTMAX_T
+                                                       case LM_INTMAX_T:
+                                                               i_num = (wide_int) 
va_arg(ap, intmax_t);
+                                                               break;
+#endif
+#if SIZEOF_PTRDIFF_T
+                                                       case LM_PTRDIFF_T:
+                                                               i_num = (wide_int) 
va_arg(ap, ptrdiff_t);
+                                                               break;
+#endif
+                                               }
+                                       }
                                        s = ap_php_conv_10(i_num, (*fmt) == 'u', 
&is_negative,
                                                                
&num_buf[NUM_BUF_SIZE], &s_len);
                                        FIX_PRECISION(adjust_precision, precision, s, 
s_len);
@@ -734,12 +804,32 @@
 
 
                                case 'o':
-                                       if (is_long)
-                                               ui_num = va_arg(ap, u_wide_int);
-                                       else if (is_size_t)
-                                               ui_num = (u_wide_int) va_arg(ap, 
size_t);
-                                       else
-                                               ui_num = (u_wide_int) va_arg(ap, 
unsigned int);
+                                       switch(modifier) {
+                                               default:
+                                                       ui_num = (u_wide_int) 
va_arg(ap, unsigned int);
+                                                       break;
+                                               case LM_LONG:
+                                                       ui_num = (u_wide_int) 
va_arg(ap, unsigned long int);
+                                                       break;
+                                               case LM_SIZE_T:
+                                                       ui_num = (u_wide_int) 
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);
+                                                       break;
+#endif
+#if SIZEOF_INTMAX_T
+                                               case LM_INTMAX_T:
+                                                       ui_num = (u_wide_int) 
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);
+                                                       break;
+#endif
+                                       }
                                        s = ap_php_conv_p2(ui_num, 3, *fmt,
                                                                
&num_buf[NUM_BUF_SIZE], &s_len);
                                        FIX_PRECISION(adjust_precision, precision, s, 
s_len);
@@ -752,12 +842,32 @@
 
                                case 'x':
                                case 'X':
-                                       if (is_long)
-                                               ui_num = (u_wide_int) va_arg(ap, 
u_wide_int);
-                                       else if (is_size_t)
-                                               ui_num = (u_wide_int) va_arg(ap, 
size_t);
-                                       else
-                                               ui_num = (u_wide_int) va_arg(ap, 
unsigned int);
+                                       switch(modifier) {
+                                               default:
+                                                       ui_num = (u_wide_int) 
va_arg(ap, unsigned int);
+                                                       break;
+                                               case LM_LONG:
+                                                       ui_num = (u_wide_int) 
va_arg(ap, unsigned long int);
+                                                       break;
+                                               case LM_SIZE_T:
+                                                       ui_num = (u_wide_int) 
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);
+                                                       break;
+#endif
+#if SIZEOF_INTMAX_T
+                                               case LM_INTMAX_T:
+                                                       ui_num = (u_wide_int) 
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);
+                                                       break;
+#endif
+                                       }
                                        s = ap_php_conv_p2(ui_num, 4, *fmt,
                                                                
&num_buf[NUM_BUF_SIZE], &s_len);
                                        FIX_PRECISION(adjust_precision, precision, s, 
s_len);
@@ -865,7 +975,7 @@
                                         */
                                case 'p':
                                        if (sizeof(char *) <= sizeof(u_wide_int)) {
-                                               ui_num = (u_wide_int) va_arg(ap, char 
*);
+                                               ui_num = (u_wide_int)((size_t) 
va_arg(ap, char *));
                                                s = ap_php_conv_p2(ui_num, 4, 'x', 
                                                                
&num_buf[NUM_BUF_SIZE], &s_len);
                                                if (i_num != 0) {
Index: php-src/main/snprintf.h
diff -u php-src/main/snprintf.h:1.24 php-src/main/snprintf.h:1.25
--- php-src/main/snprintf.h:1.24        Thu Aug 28 01:23:08 2003
+++ php-src/main/snprintf.h     Sun Sep 14 05:12:54 2003
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: snprintf.h,v 1.24 2003/08/28 05:23:08 sas Exp $ */
+/* $Id: snprintf.h,v 1.25 2003/09/14 09:12:54 helly Exp $ */
 
 /*
 
@@ -83,12 +83,35 @@
        NO = 0, YES = 1
 } boolean_e;
 
+typedef enum {
+       LM_STD = 0,
+#if SIZEOF_INTMAX_T
+       LM_INTMAX_T,
+#endif
+#if SIZEOF_PTRDIFF_T
+       LM_PTRDIFF_T,
+#endif
+#if SIZEOF_LONG_LONG
+       LM_LONG_LONG,
+#endif
+       LM_SIZE_T,
+       LM_LONG
+} length_modifier_e;
+
 extern char * ap_php_cvt(double arg, int ndigits, int *decpt, int *sign, int eflag, 
char *buf);
 extern char * ap_php_ecvt(double arg, int ndigits, int *decpt, int *sign, char *buf);
 extern char * ap_php_fcvt(double arg, int ndigits, int *decpt, int *sign, char *buf);
 extern char * ap_php_gcvt(double number, int ndigit, char *buf, boolean_e altform);
 
-#define WIDE_INT               long
+#if SIZEOF_LONG_LONG_INT
+# define WIDE_INT              long long int
+#elif SIZEOF_LONG_LONG
+# define WIDE_INT              long long
+#elif _WIN64
+# define WIDE_INT              __int64
+#else
+# define WIDE_INT              long
+#endif
 typedef WIDE_INT wide_int;
 typedef unsigned WIDE_INT u_wide_int;
 
Index: php-src/main/spprintf.c
diff -u php-src/main/spprintf.c:1.17 php-src/main/spprintf.c:1.18
--- php-src/main/spprintf.c:1.17        Sat Sep 13 12:49:24 2003
+++ php-src/main/spprintf.c     Sun Sep 14 05:12:54 2003
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: spprintf.c,v 1.17 2003/09/13 16:49:24 helly Exp $ */
+/* $Id: spprintf.c,v 1.18 2003/09/14 09:12:54 helly Exp $ */
 
 /* This is the spprintf implementation.
  * It has emerged from apache snprintf. See original header:
@@ -78,6 +78,16 @@
  */
 
 #include "php.h"
+
+#include <stddef.h>
+#include <stdio.h>
+#include <ctype.h>
+#include <sys/types.h>
+#include <stdarg.h>
+#include <string.h>
+#include <stdlib.h>
+#include <math.h>
+
 #include "snprintf.h"
 
 #define FALSE           0
@@ -186,8 +196,7 @@
        /*
         * Flag variables
         */
-       boolean_e is_long;
-       boolean_e is_size_t;
+       length_modifier_e modifier;
        boolean_e alternate_form;
        boolean_e print_sign;
        boolean_e print_blank;
@@ -275,17 +284,43 @@
                        /*
                         * Modifier check
                         */
-                       if (*fmt == 'l') {
-                               is_long = YES;
-                               is_size_t = NO;
-                               fmt++;
-                       } else if (*fmt == 'z') {
-                               is_size_t = YES;
-                               is_long = NO;
-                               fmt++;
-                       } else {
-                               is_size_t = NO;
-                               is_long = NO;
+                       switch (*fmt) {
+                               case 'l':
+                                       fmt++;
+#if SIZEOF_LONG_LONG
+                                       if (*fmt == 'l') {
+                                               fmt++;
+                                               modifier = LM_LONG_LONG;
+                                       } else
+#endif
+                                               modifier = LM_LONG;
+                                       break;
+                               case 'z':
+                                       modifier = LM_SIZE_T;
+                                       break;
+                               case 'j':
+#if SIZEOF_INTMAX_T
+                                       modifier = LM_INTMAX_T;
+#else
+                                       modifier = LM_SIZE_T;
+#endif
+                                       break;
+                               case 't':
+#if SIZEOF_PTRDIFF_T
+                                       modifier = LM_PTRDIFF_T;
+#else
+                                       modifier = LM_SIZE_T;
+#endif
+                                       break;
+                               case 'h':
+                                       fmt++;
+                                       if (*fmt == 'h') {
+                                               fmt++;
+                                       }
+                                       /* these are promoted to int, so no break */
+                               default:                                
+                                       modifier = LM_STD;
+                                       break;
                        }
 
                        /*
@@ -301,12 +336,32 @@
                         */
                        switch (*fmt) {
                                case 'u':
-                                       if (is_long)
-                                               i_num = va_arg(ap, u_wide_int);
-                                       else if (is_size_t)
-                                               i_num = (wide_int) va_arg(ap, size_t);
-                                       else
-                                               i_num = (wide_int) va_arg(ap, unsigned 
int);
+                                       switch(modifier) {
+                                               default:
+                                                       i_num = (wide_int) va_arg(ap, 
unsigned int);
+                                                       break;
+                                               case LM_LONG:
+                                                       i_num = (wide_int) va_arg(ap, 
unsigned long int);
+                                                       break;
+                                               case LM_SIZE_T:
+                                                       i_num = (wide_int) va_arg(ap, 
size_t);
+                                                       break;
+#if SIZEOF_LONG_LONG
+                                               case LM_LONG_LONG:
+                                                       i_num = (wide_int) va_arg(ap, 
u_wide_int);
+                                                       break;
+#endif
+#if SIZEOF_INTMAX_T
+                                               case LM_INTMAX_T:
+                                                       i_num = (wide_int) va_arg(ap, 
uintmax_t);
+                                                       break;
+#endif
+#if SIZEOF_PTRDIFF_T
+                                               case LM_PTRDIFF_T:
+                                                       i_num = (wide_int) va_arg(ap, 
ptrdiff_t);
+                                                       break;
+#endif
+                                       }
                                        /*
                                         * The rest also applies to other integer 
formats, so fall
                                         * into that case.
@@ -317,13 +372,37 @@
                                         * Get the arg if we haven't already.
                                         */
                                        if ((*fmt) != 'u') {
-                                               if (is_long)
-                                                       i_num = va_arg(ap, wide_int);
-                                               else if (is_size_t)
-                                                       i_num = (wide_int) va_arg(ap, 
size_t);
-                                               else
-                                                       i_num = (wide_int) va_arg(ap, 
int);
-                                       };
+                                               switch(modifier) {
+                                                       default:
+                                                               i_num = (wide_int) 
va_arg(ap, int);
+                                                               break;
+                                                       case LM_LONG:
+                                                               i_num = (wide_int) 
va_arg(ap, long int);
+                                                               break;
+                                                       case LM_SIZE_T:
+#if SIZEOF_SSIZE_T
+                                                               i_num = (wide_int) 
va_arg(ap, ssize_t);
+#else
+                                                               i_num = (wide_int) 
va_arg(ap, size_t);
+#endif
+                                                               break;
+#if SIZEOF_LONG_LONG
+                                                       case LM_LONG_LONG:
+                                                               i_num = (wide_int) 
va_arg(ap, wide_int);
+                                                               break;
+#endif
+#if SIZEOF_INTMAX_T
+                                                       case LM_INTMAX_T:
+                                                               i_num = (wide_int) 
va_arg(ap, intmax_t);
+                                                               break;
+#endif
+#if SIZEOF_PTRDIFF_T
+                                                       case LM_PTRDIFF_T:
+                                                               i_num = (wide_int) 
va_arg(ap, ptrdiff_t);
+                                                               break;
+#endif
+                                               }
+                                       }
                                        s = ap_php_conv_10(i_num, (*fmt) == 'u', 
&is_negative,
                                                                
&num_buf[NUM_BUF_SIZE], &s_len);
                                        FIX_PRECISION(adjust_precision, precision, s, 
s_len);
@@ -340,12 +419,32 @@
 
 
                                case 'o':
-                                       if (is_long)
-                                               ui_num = va_arg(ap, u_wide_int);
-                                       else if (is_size_t)
-                                               ui_num = (u_wide_int) va_arg(ap, 
size_t);
-                                       else
-                                               ui_num = (u_wide_int) va_arg(ap, 
unsigned int);
+                                       switch(modifier) {
+                                               default:
+                                                       ui_num = (u_wide_int) 
va_arg(ap, unsigned int);
+                                                       break;
+                                               case LM_LONG:
+                                                       ui_num = (u_wide_int) 
va_arg(ap, unsigned long int);
+                                                       break;
+                                               case LM_SIZE_T:
+                                                       ui_num = (u_wide_int) 
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);
+                                                       break;
+#endif
+#if SIZEOF_INTMAX_T
+                                               case LM_INTMAX_T:
+                                                       ui_num = (u_wide_int) 
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);
+                                                       break;
+#endif
+                                       }
                                        s = ap_php_conv_p2(ui_num, 3, *fmt,
                                                                
&num_buf[NUM_BUF_SIZE], &s_len);
                                        FIX_PRECISION(adjust_precision, precision, s, 
s_len);
@@ -358,15 +457,32 @@
 
                                case 'x':
                                case 'X':
-                                       /*
-                                        * Get the arg if we haven't already.
-                                        */
-                                       if (is_long)
-                                               ui_num = (u_wide_int) va_arg(ap, 
u_wide_int);
-                                       else if (is_size_t)
-                                               ui_num = (u_wide_int) va_arg(ap, 
size_t);
-                                       else
-                                               ui_num = (u_wide_int) va_arg(ap, 
unsigned int);
+                                       switch(modifier) {
+                                               default:
+                                                       ui_num = (u_wide_int) 
va_arg(ap, unsigned int);
+                                                       break;
+                                               case LM_LONG:
+                                                       ui_num = (u_wide_int) 
va_arg(ap, unsigned long int);
+                                                       break;
+                                               case LM_SIZE_T:
+                                                       ui_num = (u_wide_int) 
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);
+                                                       break;
+#endif
+#if SIZEOF_INTMAX_T
+                                               case LM_INTMAX_T:
+                                                       ui_num = (u_wide_int) 
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);
+                                                       break;
+#endif
+                                       }
                                        s = ap_php_conv_p2(ui_num, 4, *fmt,
                                                                
&num_buf[NUM_BUF_SIZE], &s_len);
                                        FIX_PRECISION(adjust_precision, precision, s, 
s_len);
@@ -474,7 +590,7 @@
                                         */
                                case 'p':
                                        if (sizeof(char *) <= sizeof(u_wide_int)) {
-                                               ui_num = (u_wide_int) va_arg(ap, char 
*);
+                                               ui_num = (u_wide_int)((size_t) 
va_arg(ap, char *));
                                                s = ap_php_conv_p2(ui_num, 4, 'x', 
                                                                
&num_buf[NUM_BUF_SIZE], &s_len);
                                                if (i_num != 0) {

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to