]> granicus.if.org Git - php/commitdiff
- Fix bug 15037
authorAndi Gutmans <andi@php.net>
Sat, 29 Jun 2002 07:35:41 +0000 (07:35 +0000)
committerAndi Gutmans <andi@php.net>
Sat, 29 Jun 2002 07:35:41 +0000 (07:35 +0000)
- Bump version to alpha2-dev

Zend/zend.h
Zend/zend_operators.c

index f1995d61e478787d75caaa06d833dfd473aaf8be..6b8be344bac6f91a7251b7a1b89bd33851620e08 100644 (file)
@@ -22,7 +22,7 @@
 #ifndef ZEND_H
 #define ZEND_H
 
-#define ZEND_VERSION "2.0.0-dev"
+#define ZEND_VERSION "2.0.0-alpha2-dev"
 
 #define ZEND_ENGINE_2
 
index fca3b5618c07d9bbd5f7607cd0aa933d8f7b43a2..5fdd1c1eb6d1d7769804d84cbfa14fe3bbf9e8f2 100644 (file)
@@ -1509,6 +1509,7 @@ ZEND_API int increment_function(zval *op1)
 ZEND_API int decrement_function(zval *op1)
 {
        long lval;
+       double dval;
        
        switch (op1->type) {
                case IS_LONG:
@@ -1528,16 +1529,23 @@ ZEND_API int decrement_function(zval *op1)
                                op1->value.lval = -1;
                                op1->type = IS_LONG;
                                break;
-                       } else if (is_numeric_string(op1->value.str.val, op1->value.str.len, &lval, NULL, 0)==IS_LONG) { /* long */
-                               STR_FREE(op1->value.str.val);
-                               if(lval == LONG_MIN) {
-                                       double d = (double)lval;
-                                       ZVAL_DOUBLE(op1, d-1);
-                               } else {
-                                       op1->value.lval = lval-1;
-                                       op1->type = IS_LONG;
-                               }
-                               break;
+                       }
+                       switch(is_numeric_string(op1->value.str.val, op1->value.str.len, &lval, &dval, 0)) {
+                               case IS_LONG:
+                                       STR_FREE(op1->value.str.val);
+                                       if(lval == LONG_MIN) {
+                                               double d = (double)lval;
+                                               ZVAL_DOUBLE(op1, d-1);
+                                       } else {
+                                               op1->value.lval = lval-1;
+                                               op1->type = IS_LONG;
+                                       }
+                                       break;
+                               case IS_DOUBLE:
+                                       STR_FREE(op1->value.str.val);
+                                       op1->value.dval = dval - 1;
+                                       op1->type = IS_DOUBLE;
+                                       break;
                        }
                        break;
                default: