cvs: php4 /ext/interbase interbase.c
| From: | Derick Rethans | Date: | Wed, 06 Mar 2002 19:54:47 +0000 |
| Subject: | cvs: php4 /ext/interbase interbase.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-9742@lists.php.net to get a copy of this message | ||
derick Wed Mar 6 14:54:47 2002 EDT
Modified files:
/php4/ext/interbase interbase.c
Log:
- Fix for bug #12383 and #14755: 105.05$ becomes 105.5$ (Patch by: Giancarlo
Niccolai <giancarlo@niccolai.org>)
Index: php4/ext/interbase/interbase.c
diff -u php4/ext/interbase/interbase.c:1.76 php4/ext/interbase/interbase.c:1.77
--- php4/ext/interbase/interbase.c:1.76 Fri Mar 1 09:03:10 2002
+++ php4/ext/interbase/interbase.c Wed Mar 6 14:54:47 2002
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: interbase.c,v 1.76 2002/03/01 14:03:10 derick Exp $ */
+/* $Id: interbase.c,v 1.77 2002/03/06 19:54:47 derick Exp $ */
/* TODO: Arrays, roles?
@@ -594,7 +594,7 @@
php_info_print_table_start();
php_info_print_table_row(2, "Interbase Support", "enabled");
- php_info_print_table_row(2, "Revision", "$Revision: 1.76 $");
+ php_info_print_table_row(2, "Revision", "$Revision: 1.77 $");
#ifdef COMPILE_DL_INTERBASE
php_info_print_table_row(2, "Dynamic Module", "yes");
#endif
@@ -1783,11 +1783,22 @@
break;
#ifdef SQL_INT64
case SQL_INT64:
- Z_TYPE_P(val) = IS_STRING;
- Z_STRLEN_P(val) = sprintf(string_data, "%Ld.%0*Ld",
- (ISC_INT64) (*((ISC_INT64 *)data) / (int) pow(10.0, (double) -scale)), -scale,
- (ISC_INT64) abs((int) (*((ISC_INT64 *)data) % (int) pow(10.0, (double) -scale))));
- Z_STRVAL_P(val) = estrdup(string_data);
+ val->type = IS_STRING;
+
+ if (scale) {
+ int i, len;
+ char dt[20];
+ double number = (double) ((ISC_INT64) (*((ISC_INT64 *)data)));
+
+ number /= - 10 * scale;
+ sprintf(dt, "%%0.%df", -scale);
+ val->value.str.len = sprintf (string_data, dt, number);
+ } else {
+ val->value.str.len = sprintf (string_data, "%Ld",
+ (ISC_INT64) (*((ISC_INT64 *)data)));
+ }
+
+ val->value.str.val = estrdup(string_data);
break;
#endif
#ifndef SQL_TIMESTAMP