]> granicus.if.org Git - php/commitdiff
better fix bug #20641.
authorDaniela Mariaschi <daniela@php.net>
Wed, 14 May 2003 08:22:54 +0000 (08:22 +0000)
committerDaniela Mariaschi <daniela@php.net>
Wed, 14 May 2003 08:22:54 +0000 (08:22 +0000)
Overflow numeric/decimal datatype on NT

ext/interbase/interbase.c
ext/interbase/php_interbase.h

index 65f951242d0220a04b36087d2c990797bccd5543..d77a126478f6d9de2ff3467f3df866281c8fa304 100644 (file)
@@ -1828,7 +1828,8 @@ static int _php_ibase_var_zval(zval *val, void *data, int type, int len, int sca
                                sprintf(dt, "%%0.%df", -scale);
                                Z_STRLEN_P(val) = sprintf (string_data, dt, number / f);
                        } else {
-                               Z_STRLEN_P(val) = sprintf (string_data, "%.0f", (double) (ISC_INT64) (*((ISC_INT64 *) data)));
+                               Z_STRLEN_P(val) =sprintf (string_data, "%.0" ISC_INT64_FORMAT "d",
+                                                                                           (ISC_INT64) *(ISC_INT64 *) data);
                        }
 
                        Z_STRVAL_P(val) = estrdup(string_data);
index bf3342aa7cb78064aedbd7853947234987f0d45b..72c942e9a9d56a227b66308ddc71b1ab792b885a 100644 (file)
@@ -30,8 +30,14 @@ extern zend_module_entry ibase_module_entry;
 
 #ifdef PHP_WIN32
 #define PHP_IBASE_API __declspec(dllexport)
+#ifndef ISC_INT64_FORMAT
+ #define ISC_INT64_FORMAT "I64"
+#endif
 #else
 #define PHP_IBASE_API
+#ifndef ISC_INT64_FORMAT
+ #define ISC_INT64_FORMAT "ll"
+#endif
 #endif
 
 PHP_MINIT_FUNCTION(ibase);