abies           Fri Feb 13 05:43:24 2004 EDT

  Modified files:              (Branch: PHP_4_3)
    /php-src/ext/interbase      interbase.c 
    /php-src/ext/interbase/tests        003.phpt 
  Log:
  Fixed bug #27235 (NUMERIC x.0 field returns empty string on 0)
  CS/WS
  # MFB not necessary, bug doesn't apply to HEAD
  
  
http://cvs.php.net/diff.php/php-src/ext/interbase/interbase.c?r1=1.91.2.28&r2=1.91.2.29&ty=u
Index: php-src/ext/interbase/interbase.c
diff -u php-src/ext/interbase/interbase.c:1.91.2.28 
php-src/ext/interbase/interbase.c:1.91.2.29
--- php-src/ext/interbase/interbase.c:1.91.2.28 Wed Jan 21 05:12:14 2004
+++ php-src/ext/interbase/interbase.c   Fri Feb 13 05:43:22 2004
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: interbase.c,v 1.91.2.28 2004/01/21 10:12:14 abies Exp $ */
+/* $Id: interbase.c,v 1.91.2.29 2004/02/13 10:43:22 abies Exp $ */
 
 
 /* TODO: Arrays, roles?
@@ -643,7 +643,7 @@
 
        php_info_print_table_start();
        php_info_print_table_row(2, "Interbase Support", "enabled");
-       php_info_print_table_row(2, "Revision", "$Revision: 1.91.2.28 $");
+       php_info_print_table_row(2, "Revision", "$Revision: 1.91.2.29 $");
 #ifdef COMPILE_DL_INTERBASE
        php_info_print_table_row(2, "Dynamic Module", "yes");
 #endif
@@ -1836,32 +1836,34 @@
                        }
                        break;
 #ifdef SQL_INT64
-               case SQL_INT64:
+               case SQL_INT64: {
+                       ISC_INT64 n = *(ISC_INT64 *) data;
                        Z_TYPE_P(val) = IS_STRING;
-                       if (scale < 0 ){
-                               short j = 0;
-                               ISC_INT64 n, f = 1;
-                               n = (ISC_INT64) *(ISC_INT64 *) data;
-                               for (j = 0; j < -scale; j++) {
+
+                       if (scale < 0) {
+                               short j;
+                               ISC_INT64 f = 1;
+
+                               for (j = 0; j < -scale; ++j) {
                                        f *= 10;
                                }
-                               if ( n >= 0){
-                               Z_STRLEN_P(val) = sprintf (string_data, "%" 
ISC_INT64_FORMAT "d.%0*" ISC_INT64_FORMAT "d",
-                                                                                      
 (ISC_INT64) n / f, -scale, (ISC_INT64) n % f );
-                               }else if ((n/f) != 0 ){
-                               Z_STRLEN_P(val) = sprintf (string_data, "%" 
ISC_INT64_FORMAT "d.%0*" ISC_INT64_FORMAT "d",
-                                                                                      
 (ISC_INT64) n / f, -scale, (ISC_INT64) -(n % f) );
-                               }else{
-                               Z_STRLEN_P(val) = sprintf (string_data, "%s.%0*" 
ISC_INT64_FORMAT "d",
-                                                                                      
 "-0", -scale, (ISC_INT64) -(n % f) );
+                               if (n >= 0) {
+                                       Z_STRLEN_P(val) = sprintf (string_data, 
+                                               "%" ISC_INT64_FORMAT "d.%0*" 
ISC_INT64_FORMAT "d", n / f, -scale, n % f);
+                               } else if (n < -f) {
+                                       Z_STRLEN_P(val) = sprintf (string_data,
+                                               "%" ISC_INT64_FORMAT "d.%0*" 
ISC_INT64_FORMAT "d", n / f, -scale, -n % f);
+                               } else {
+                                       Z_STRLEN_P(val) = sprintf (string_data, 
+                                               "-0.%0*" ISC_INT64_FORMAT "d", -scale, 
-n % f);
                                }
                        } else {
-                               Z_STRLEN_P(val) =sprintf (string_data, "%.0" 
ISC_INT64_FORMAT "d",
-                                                                                      
     (ISC_INT64) *(ISC_INT64 *) data);
+                               Z_STRLEN_P(val) = sprintf (string_data, "%" 
ISC_INT64_FORMAT "d", n);
                        }
 
                        Z_STRVAL_P(val) = estrdup(string_data);
                        break;
+               }
 #endif
 #ifndef SQL_TIMESTAMP
                case SQL_DATE:
http://cvs.php.net/diff.php/php-src/ext/interbase/tests/003.phpt?r1=1.2.4.2&r2=1.2.4.3&ty=u
Index: php-src/ext/interbase/tests/003.phpt
diff -u php-src/ext/interbase/tests/003.phpt:1.2.4.2 
php-src/ext/interbase/tests/003.phpt:1.2.4.3
--- php-src/ext/interbase/tests/003.phpt:1.2.4.2        Mon Jun  2 08:59:20 2003
+++ php-src/ext/interbase/tests/003.phpt        Fri Feb 13 05:43:24 2004
@@ -41,7 +41,7 @@
        $v_decimal7_2 = rand_number(7,2); 
        $v_decimal7_0 = rand_number(7,0);
        $v_numeric15_15 = rand_number(15,15);
-       $v_numeric15_0 = rand_number(15,0);
+       $v_numeric15_0 = $iter ? rand_number(15,0) : 0;
        $v_double  = rand_number(18);
        $v_float   = rand_number(7);
        $v_integer = rand_number(9,0);
@@ -88,7 +88,7 @@
             echo " in:  $v_numeric15_15\n";
             echo " out: $row->V_NUMERIC15_15\n";
         }
-        if($row->V_NUMERIC15_0 != $v_numeric15_0){
+        if($row->V_NUMERIC15_0 != (string)$v_numeric15_0){
             echo " NUMERIC15_0 fail\n";
             echo " in:  $v_numeric15_0\n";
             echo " out: $row->V_NUMERIC15_0\n";

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

Reply via email to