summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniela Mariaschi <daniela@php.net>2003-05-14 08:22:54 +0000
committerDaniela Mariaschi <daniela@php.net>2003-05-14 08:22:54 +0000
commit82d513ee727787229e03a413ffabd1d29fc09968 (patch)
tree086fcafd4da2174c1749ea383e830869a45db340
parent7ddb7f15d4f42036c06f74493fb0635ff0c617fd (diff)
downloadphp-git-82d513ee727787229e03a413ffabd1d29fc09968.tar.gz
better fix bug #20641.
Overflow numeric/decimal datatype on NT
-rw-r--r--ext/interbase/interbase.c3
-rw-r--r--ext/interbase/php_interbase.h6
2 files changed, 8 insertions, 1 deletions
diff --git a/ext/interbase/interbase.c b/ext/interbase/interbase.c
index 65f951242d..d77a126478 100644
--- a/ext/interbase/interbase.c
+++ b/ext/interbase/interbase.c
@@ -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);
diff --git a/ext/interbase/php_interbase.h b/ext/interbase/php_interbase.h
index bf3342aa7c..72c942e9a9 100644
--- a/ext/interbase/php_interbase.h
+++ b/ext/interbase/php_interbase.h
@@ -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);