]> granicus.if.org Git - php/commitdiff
Introduce ArithmeticError
authorBob Weinand <bobwei9@hotmail.com>
Thu, 2 Jul 2015 18:47:44 +0000 (20:47 +0200)
committerBob Weinand <bobwei9@hotmail.com>
Thu, 2 Jul 2015 18:47:44 +0000 (20:47 +0200)
Zend/zend_exceptions.c
Zend/zend_exceptions.h
Zend/zend_operators.c
ext/standard/math.c
tests/lang/operators/bitwiseShiftLeft_basiclong_64bit.phpt
tests/lang/operators/bitwiseShiftLeft_variationStr_64bit.phpt
tests/lang/operators/bitwiseShiftRight_basiclong_64bit.phpt
tests/lang/operators/bitwiseShiftRight_variationStr.phpt

index 9f5b2448d1a3df30b77dd44b2f3f99cc214c5870..8c44b31d8c3831adda940f9e48d93032d691e250 100644 (file)
@@ -31,6 +31,7 @@
 #include "zend_smart_str.h"
 
 ZEND_API zend_class_entry *zend_ce_throwable;
+ZEND_API zend_class_entry *zend_ce_arithmetic_error;
 ZEND_API zend_class_entry *zend_ce_division_by_zero_error;
 
 static zend_class_entry *default_exception_ce;
@@ -855,8 +856,12 @@ void zend_register_default_exception(void) /* {{{ */
        type_error_ce = zend_register_internal_class_ex(&ce, error_ce);
        type_error_ce->create_object = zend_default_exception_new;
 
+       INIT_CLASS_ENTRY(ce, "ArithmeticError", NULL);
+       zend_ce_arithmetic_error = zend_register_internal_class_ex(&ce, error_ce);
+       zend_ce_arithmetic_error->create_object = zend_default_exception_new;
+
        INIT_CLASS_ENTRY(ce, "DivisionByZeroError", NULL);
-       zend_ce_division_by_zero_error = zend_register_internal_class_ex(&ce, error_ce);
+       zend_ce_division_by_zero_error = zend_register_internal_class_ex(&ce, zend_ce_arithmetic_error);
        zend_ce_division_by_zero_error->create_object = zend_default_exception_new;
 }
 /* }}} */
index f07bc78b88e81d26894c90c93eeec6ff5d62d12a..8b5deed15c7354fc34d374d29a18c19dc3d41bdb 100644 (file)
@@ -27,6 +27,7 @@
 BEGIN_EXTERN_C()
 
 extern ZEND_API zend_class_entry *zend_ce_throwable;
+extern ZEND_API zend_class_entry *zend_ce_arithmetic_error;
 extern ZEND_API zend_class_entry *zend_ce_division_by_zero_error;
 
 ZEND_API void zend_exception_set_previous(zend_object *exception, zend_object *add_previous);
index 5ad1a1479111d700163259d3ae54759f8faabdc4..5e7a2911a1127c6a439eebf96ab3def815af63ad 100644 (file)
@@ -1167,7 +1167,7 @@ ZEND_API int ZEND_FASTCALL mod_function(zval *result, zval *op1, zval *op2) /* {
                if (EG(current_execute_data) && !CG(in_compilation)) {
                        zend_throw_exception_ex(zend_ce_division_by_zero_error, 0, "Modulo by zero");
                } else {
-                       zend_error_noreturn(E_ERROR, "Division by zero");
+                       zend_error_noreturn(E_ERROR, "Modulo by zero");
                }
                ZVAL_UNDEF(result);
                return FAILURE;
@@ -1518,7 +1518,7 @@ ZEND_API int ZEND_FASTCALL shift_left_function(zval *result, zval *op1, zval *op
                        return SUCCESS;
                } else {
                        if (EG(current_execute_data) && !CG(in_compilation)) {
-                               zend_throw_exception_ex(NULL, 0, "Bit shift by negative number");
+                               zend_throw_exception_ex(zend_ce_arithmetic_error, 0, "Bit shift by negative number");
                        } else {
                                zend_error_noreturn(E_ERROR, "Bit shift by negative number");
                        }
@@ -1549,7 +1549,7 @@ ZEND_API int ZEND_FASTCALL shift_right_function(zval *result, zval *op1, zval *o
                        return SUCCESS;
                } else {
                        if (EG(current_execute_data) && !CG(in_compilation)) {
-                               zend_throw_exception_ex(NULL, 0, "Bit shift by negative number");
+                               zend_throw_exception_ex(zend_ce_arithmetic_error, 0, "Bit shift by negative number");
                        } else {
                                zend_error_noreturn(E_ERROR, "Bit shift by negative number");
                        }
index cdfb486c4fddd6ddaab59cad208c5a0b8d638370..9ab457b41dd12dae9ca930f095490526ae090266 100644 (file)
@@ -1472,7 +1472,7 @@ PHP_FUNCTION(intdiv)
        } else if (divisor == -1 && numerator == ZEND_LONG_MIN) {
                /* Prevent overflow error/crash ... really should not happen:
                   We don't return a float here as that violates function contract */
-               zend_error(E_ERROR | E_EXCEPTION, "Division of PHP_INT_MIN by -1 is not an integer");
+               zend_throw_exception_ex(zend_ce_arithmetic_error, 0, "Division of PHP_INT_MIN by -1 is not an integer");
                return;
        }
 
index 556d8e3444fc44eb9d7b0c7f8cb230808c4dff16..380beca219eafa7460908f3d0f0f187b98c20d0e 100644 (file)
@@ -27,7 +27,7 @@ foreach ($longVals as $longVal) {
          echo "--- testing: $longVal << $otherVal ---\n";
          try {
         var_dump($longVal<<$otherVal);
-      } catch (Exception $e) {
+      } catch (Throwable $e) {
         echo "Exception: " . $e->getMessage() . "\n";
       }
    }
@@ -38,7 +38,7 @@ foreach ($otherVals as $otherVal) {
          echo "--- testing: $otherVal << $longVal ---\n";
          try {
         var_dump($otherVal<<$longVal);
-      } catch (Exception $e) {
+      } catch (Throwable $e) {
         echo "Exception: " . $e->getMessage() . "\n";
       }
    }
index 1ae091461fdb6dac9eb4a587d7a9ecf5b6826a14..174d947445fa94ef97be14069e72ef8aa7edb434 100644 (file)
@@ -19,7 +19,7 @@ foreach ($strVals as $strVal) {
          echo "--- testing: '$strVal' << '$otherVal' ---\n";\r
       try {      \r
         var_dump($strVal<<$otherVal);\r
-      } catch (Exception $e) {\r
+      } catch (Throwable $e) {\r
         echo "Exception: " . $e->getMessage() . "\n";\r
       }\r
    }\r
@@ -29,396 +29,396 @@ foreach ($strVals as $strVal) {
 ?>\r
 ===DONE===\r
 --EXPECT--\r
---- testing: '0' << '0' ---
-int(0)
---- testing: '0' << '65' ---
-int(0)
---- testing: '0' << '-44' ---
-Exception: Bit shift by negative number
---- testing: '0' << '1.2' ---
-int(0)
---- testing: '0' << '-7.7' ---
-Exception: Bit shift by negative number
---- testing: '0' << 'abc' ---
-int(0)
---- testing: '0' << '123abc' ---
-int(0)
---- testing: '0' << '123e5' ---
-int(0)
---- testing: '0' << '123e5xyz' ---
-int(0)
---- testing: '0' << ' 123abc' ---
-int(0)
---- testing: '0' << '123 abc' ---
-int(0)
---- testing: '0' << '123abc ' ---
-int(0)
---- testing: '0' << '3.4a' ---
-int(0)
---- testing: '0' << 'a5.9' ---
-int(0)
---- testing: '65' << '0' ---
-int(65)
---- testing: '65' << '65' ---
-int(0)
---- testing: '65' << '-44' ---
-Exception: Bit shift by negative number
---- testing: '65' << '1.2' ---
-int(130)
---- testing: '65' << '-7.7' ---
-Exception: Bit shift by negative number
---- testing: '65' << 'abc' ---
-int(65)
---- testing: '65' << '123abc' ---
-int(0)
---- testing: '65' << '123e5' ---
-int(0)
---- testing: '65' << '123e5xyz' ---
-int(0)
---- testing: '65' << ' 123abc' ---
-int(0)
---- testing: '65' << '123 abc' ---
-int(0)
---- testing: '65' << '123abc ' ---
-int(0)
---- testing: '65' << '3.4a' ---
-int(520)
---- testing: '65' << 'a5.9' ---
-int(65)
---- testing: '-44' << '0' ---
-int(-44)
---- testing: '-44' << '65' ---
-int(0)
---- testing: '-44' << '-44' ---
-Exception: Bit shift by negative number
---- testing: '-44' << '1.2' ---
-int(-88)
---- testing: '-44' << '-7.7' ---
-Exception: Bit shift by negative number
---- testing: '-44' << 'abc' ---
-int(-44)
---- testing: '-44' << '123abc' ---
-int(0)
---- testing: '-44' << '123e5' ---
-int(0)
---- testing: '-44' << '123e5xyz' ---
-int(0)
---- testing: '-44' << ' 123abc' ---
-int(0)
---- testing: '-44' << '123 abc' ---
-int(0)
---- testing: '-44' << '123abc ' ---
-int(0)
---- testing: '-44' << '3.4a' ---
-int(-352)
---- testing: '-44' << 'a5.9' ---
-int(-44)
---- testing: '1.2' << '0' ---
-int(1)
---- testing: '1.2' << '65' ---
-int(0)
---- testing: '1.2' << '-44' ---
-Exception: Bit shift by negative number
---- testing: '1.2' << '1.2' ---
-int(2)
---- testing: '1.2' << '-7.7' ---
-Exception: Bit shift by negative number
---- testing: '1.2' << 'abc' ---
-int(1)
---- testing: '1.2' << '123abc' ---
-int(0)
---- testing: '1.2' << '123e5' ---
-int(0)
---- testing: '1.2' << '123e5xyz' ---
-int(0)
---- testing: '1.2' << ' 123abc' ---
-int(0)
---- testing: '1.2' << '123 abc' ---
-int(0)
---- testing: '1.2' << '123abc ' ---
-int(0)
---- testing: '1.2' << '3.4a' ---
-int(8)
---- testing: '1.2' << 'a5.9' ---
-int(1)
---- testing: '-7.7' << '0' ---
-int(-7)
---- testing: '-7.7' << '65' ---
-int(0)
---- testing: '-7.7' << '-44' ---
-Exception: Bit shift by negative number
---- testing: '-7.7' << '1.2' ---
-int(-14)
---- testing: '-7.7' << '-7.7' ---
-Exception: Bit shift by negative number
---- testing: '-7.7' << 'abc' ---
-int(-7)
---- testing: '-7.7' << '123abc' ---
-int(0)
---- testing: '-7.7' << '123e5' ---
-int(0)
---- testing: '-7.7' << '123e5xyz' ---
-int(0)
---- testing: '-7.7' << ' 123abc' ---
-int(0)
---- testing: '-7.7' << '123 abc' ---
-int(0)
---- testing: '-7.7' << '123abc ' ---
-int(0)
---- testing: '-7.7' << '3.4a' ---
-int(-56)
---- testing: '-7.7' << 'a5.9' ---
-int(-7)
---- testing: 'abc' << '0' ---
-int(0)
---- testing: 'abc' << '65' ---
-int(0)
---- testing: 'abc' << '-44' ---
-Exception: Bit shift by negative number
---- testing: 'abc' << '1.2' ---
-int(0)
---- testing: 'abc' << '-7.7' ---
-Exception: Bit shift by negative number
---- testing: 'abc' << 'abc' ---
-int(0)
---- testing: 'abc' << '123abc' ---
-int(0)
---- testing: 'abc' << '123e5' ---
-int(0)
---- testing: 'abc' << '123e5xyz' ---
-int(0)
---- testing: 'abc' << ' 123abc' ---
-int(0)
---- testing: 'abc' << '123 abc' ---
-int(0)
---- testing: 'abc' << '123abc ' ---
-int(0)
---- testing: 'abc' << '3.4a' ---
-int(0)
---- testing: 'abc' << 'a5.9' ---
-int(0)
---- testing: '123abc' << '0' ---
-int(123)
---- testing: '123abc' << '65' ---
-int(0)
---- testing: '123abc' << '-44' ---
-Exception: Bit shift by negative number
---- testing: '123abc' << '1.2' ---
-int(246)
---- testing: '123abc' << '-7.7' ---
-Exception: Bit shift by negative number
---- testing: '123abc' << 'abc' ---
-int(123)
---- testing: '123abc' << '123abc' ---
-int(0)
---- testing: '123abc' << '123e5' ---
-int(0)
---- testing: '123abc' << '123e5xyz' ---
-int(0)
---- testing: '123abc' << ' 123abc' ---
-int(0)
---- testing: '123abc' << '123 abc' ---
-int(0)
---- testing: '123abc' << '123abc ' ---
-int(0)
---- testing: '123abc' << '3.4a' ---
-int(984)
---- testing: '123abc' << 'a5.9' ---
-int(123)
---- testing: '123e5' << '0' ---
-int(123)
---- testing: '123e5' << '65' ---
-int(0)
---- testing: '123e5' << '-44' ---
-Exception: Bit shift by negative number
---- testing: '123e5' << '1.2' ---
-int(246)
---- testing: '123e5' << '-7.7' ---
-Exception: Bit shift by negative number
---- testing: '123e5' << 'abc' ---
-int(123)
---- testing: '123e5' << '123abc' ---
-int(0)
---- testing: '123e5' << '123e5' ---
-int(0)
---- testing: '123e5' << '123e5xyz' ---
-int(0)
---- testing: '123e5' << ' 123abc' ---
-int(0)
---- testing: '123e5' << '123 abc' ---
-int(0)
---- testing: '123e5' << '123abc ' ---
-int(0)
---- testing: '123e5' << '3.4a' ---
-int(984)
---- testing: '123e5' << 'a5.9' ---
-int(123)
---- testing: '123e5xyz' << '0' ---
-int(123)
---- testing: '123e5xyz' << '65' ---
-int(0)
---- testing: '123e5xyz' << '-44' ---
-Exception: Bit shift by negative number
---- testing: '123e5xyz' << '1.2' ---
-int(246)
---- testing: '123e5xyz' << '-7.7' ---
-Exception: Bit shift by negative number
---- testing: '123e5xyz' << 'abc' ---
-int(123)
---- testing: '123e5xyz' << '123abc' ---
-int(0)
---- testing: '123e5xyz' << '123e5' ---
-int(0)
---- testing: '123e5xyz' << '123e5xyz' ---
-int(0)
---- testing: '123e5xyz' << ' 123abc' ---
-int(0)
---- testing: '123e5xyz' << '123 abc' ---
-int(0)
---- testing: '123e5xyz' << '123abc ' ---
-int(0)
---- testing: '123e5xyz' << '3.4a' ---
-int(984)
---- testing: '123e5xyz' << 'a5.9' ---
-int(123)
---- testing: ' 123abc' << '0' ---
-int(123)
---- testing: ' 123abc' << '65' ---
-int(0)
---- testing: ' 123abc' << '-44' ---
-Exception: Bit shift by negative number
---- testing: ' 123abc' << '1.2' ---
-int(246)
---- testing: ' 123abc' << '-7.7' ---
-Exception: Bit shift by negative number
---- testing: ' 123abc' << 'abc' ---
-int(123)
---- testing: ' 123abc' << '123abc' ---
-int(0)
---- testing: ' 123abc' << '123e5' ---
-int(0)
---- testing: ' 123abc' << '123e5xyz' ---
-int(0)
---- testing: ' 123abc' << ' 123abc' ---
-int(0)
---- testing: ' 123abc' << '123 abc' ---
-int(0)
---- testing: ' 123abc' << '123abc ' ---
-int(0)
---- testing: ' 123abc' << '3.4a' ---
-int(984)
---- testing: ' 123abc' << 'a5.9' ---
-int(123)
---- testing: '123 abc' << '0' ---
-int(123)
---- testing: '123 abc' << '65' ---
-int(0)
---- testing: '123 abc' << '-44' ---
-Exception: Bit shift by negative number
---- testing: '123 abc' << '1.2' ---
-int(246)
---- testing: '123 abc' << '-7.7' ---
-Exception: Bit shift by negative number
---- testing: '123 abc' << 'abc' ---
-int(123)
---- testing: '123 abc' << '123abc' ---
-int(0)
---- testing: '123 abc' << '123e5' ---
-int(0)
---- testing: '123 abc' << '123e5xyz' ---
-int(0)
---- testing: '123 abc' << ' 123abc' ---
-int(0)
---- testing: '123 abc' << '123 abc' ---
-int(0)
---- testing: '123 abc' << '123abc ' ---
-int(0)
---- testing: '123 abc' << '3.4a' ---
-int(984)
---- testing: '123 abc' << 'a5.9' ---
-int(123)
---- testing: '123abc ' << '0' ---
-int(123)
---- testing: '123abc ' << '65' ---
-int(0)
---- testing: '123abc ' << '-44' ---
-Exception: Bit shift by negative number
---- testing: '123abc ' << '1.2' ---
-int(246)
---- testing: '123abc ' << '-7.7' ---
-Exception: Bit shift by negative number
---- testing: '123abc ' << 'abc' ---
-int(123)
---- testing: '123abc ' << '123abc' ---
-int(0)
---- testing: '123abc ' << '123e5' ---
-int(0)
---- testing: '123abc ' << '123e5xyz' ---
-int(0)
---- testing: '123abc ' << ' 123abc' ---
-int(0)
---- testing: '123abc ' << '123 abc' ---
-int(0)
---- testing: '123abc ' << '123abc ' ---
-int(0)
---- testing: '123abc ' << '3.4a' ---
-int(984)
---- testing: '123abc ' << 'a5.9' ---
-int(123)
---- testing: '3.4a' << '0' ---
-int(3)
---- testing: '3.4a' << '65' ---
-int(0)
---- testing: '3.4a' << '-44' ---
-Exception: Bit shift by negative number
---- testing: '3.4a' << '1.2' ---
-int(6)
---- testing: '3.4a' << '-7.7' ---
-Exception: Bit shift by negative number
---- testing: '3.4a' << 'abc' ---
-int(3)
---- testing: '3.4a' << '123abc' ---
-int(0)
---- testing: '3.4a' << '123e5' ---
-int(0)
---- testing: '3.4a' << '123e5xyz' ---
-int(0)
---- testing: '3.4a' << ' 123abc' ---
-int(0)
---- testing: '3.4a' << '123 abc' ---
-int(0)
---- testing: '3.4a' << '123abc ' ---
-int(0)
---- testing: '3.4a' << '3.4a' ---
-int(24)
---- testing: '3.4a' << 'a5.9' ---
-int(3)
---- testing: 'a5.9' << '0' ---
-int(0)
---- testing: 'a5.9' << '65' ---
-int(0)
---- testing: 'a5.9' << '-44' ---
-Exception: Bit shift by negative number
---- testing: 'a5.9' << '1.2' ---
-int(0)
---- testing: 'a5.9' << '-7.7' ---
-Exception: Bit shift by negative number
---- testing: 'a5.9' << 'abc' ---
-int(0)
---- testing: 'a5.9' << '123abc' ---
-int(0)
---- testing: 'a5.9' << '123e5' ---
-int(0)
---- testing: 'a5.9' << '123e5xyz' ---
-int(0)
---- testing: 'a5.9' << ' 123abc' ---
-int(0)
---- testing: 'a5.9' << '123 abc' ---
-int(0)
---- testing: 'a5.9' << '123abc ' ---
-int(0)
---- testing: 'a5.9' << '3.4a' ---
-int(0)
---- testing: 'a5.9' << 'a5.9' ---
-int(0)
-===DONE===
+--- testing: '0' << '0' ---\r
+int(0)\r
+--- testing: '0' << '65' ---\r
+int(0)\r
+--- testing: '0' << '-44' ---\r
+Exception: Bit shift by negative number\r
+--- testing: '0' << '1.2' ---\r
+int(0)\r
+--- testing: '0' << '-7.7' ---\r
+Exception: Bit shift by negative number\r
+--- testing: '0' << 'abc' ---\r
+int(0)\r
+--- testing: '0' << '123abc' ---\r
+int(0)\r
+--- testing: '0' << '123e5' ---\r
+int(0)\r
+--- testing: '0' << '123e5xyz' ---\r
+int(0)\r
+--- testing: '0' << ' 123abc' ---\r
+int(0)\r
+--- testing: '0' << '123 abc' ---\r
+int(0)\r
+--- testing: '0' << '123abc ' ---\r
+int(0)\r
+--- testing: '0' << '3.4a' ---\r
+int(0)\r
+--- testing: '0' << 'a5.9' ---\r
+int(0)\r
+--- testing: '65' << '0' ---\r
+int(65)\r
+--- testing: '65' << '65' ---\r
+int(0)\r
+--- testing: '65' << '-44' ---\r
+Exception: Bit shift by negative number\r
+--- testing: '65' << '1.2' ---\r
+int(130)\r
+--- testing: '65' << '-7.7' ---\r
+Exception: Bit shift by negative number\r
+--- testing: '65' << 'abc' ---\r
+int(65)\r
+--- testing: '65' << '123abc' ---\r
+int(0)\r
+--- testing: '65' << '123e5' ---\r
+int(0)\r
+--- testing: '65' << '123e5xyz' ---\r
+int(0)\r
+--- testing: '65' << ' 123abc' ---\r
+int(0)\r
+--- testing: '65' << '123 abc' ---\r
+int(0)\r
+--- testing: '65' << '123abc ' ---\r
+int(0)\r
+--- testing: '65' << '3.4a' ---\r
+int(520)\r
+--- testing: '65' << 'a5.9' ---\r
+int(65)\r
+--- testing: '-44' << '0' ---\r
+int(-44)\r
+--- testing: '-44' << '65' ---\r
+int(0)\r
+--- testing: '-44' << '-44' ---\r
+Exception: Bit shift by negative number\r
+--- testing: '-44' << '1.2' ---\r
+int(-88)\r
+--- testing: '-44' << '-7.7' ---\r
+Exception: Bit shift by negative number\r
+--- testing: '-44' << 'abc' ---\r
+int(-44)\r
+--- testing: '-44' << '123abc' ---\r
+int(0)\r
+--- testing: '-44' << '123e5' ---\r
+int(0)\r
+--- testing: '-44' << '123e5xyz' ---\r
+int(0)\r
+--- testing: '-44' << ' 123abc' ---\r
+int(0)\r
+--- testing: '-44' << '123 abc' ---\r
+int(0)\r
+--- testing: '-44' << '123abc ' ---\r
+int(0)\r
+--- testing: '-44' << '3.4a' ---\r
+int(-352)\r
+--- testing: '-44' << 'a5.9' ---\r
+int(-44)\r
+--- testing: '1.2' << '0' ---\r
+int(1)\r
+--- testing: '1.2' << '65' ---\r
+int(0)\r
+--- testing: '1.2' << '-44' ---\r
+Exception: Bit shift by negative number\r
+--- testing: '1.2' << '1.2' ---\r
+int(2)\r
+--- testing: '1.2' << '-7.7' ---\r
+Exception: Bit shift by negative number\r
+--- testing: '1.2' << 'abc' ---\r
+int(1)\r
+--- testing: '1.2' << '123abc' ---\r
+int(0)\r
+--- testing: '1.2' << '123e5' ---\r
+int(0)\r
+--- testing: '1.2' << '123e5xyz' ---\r
+int(0)\r
+--- testing: '1.2' << ' 123abc' ---\r
+int(0)\r
+--- testing: '1.2' << '123 abc' ---\r
+int(0)\r
+--- testing: '1.2' << '123abc ' ---\r
+int(0)\r
+--- testing: '1.2' << '3.4a' ---\r
+int(8)\r
+--- testing: '1.2' << 'a5.9' ---\r
+int(1)\r
+--- testing: '-7.7' << '0' ---\r
+int(-7)\r
+--- testing: '-7.7' << '65' ---\r
+int(0)\r
+--- testing: '-7.7' << '-44' ---\r
+Exception: Bit shift by negative number\r
+--- testing: '-7.7' << '1.2' ---\r
+int(-14)\r
+--- testing: '-7.7' << '-7.7' ---\r
+Exception: Bit shift by negative number\r
+--- testing: '-7.7' << 'abc' ---\r
+int(-7)\r
+--- testing: '-7.7' << '123abc' ---\r
+int(0)\r
+--- testing: '-7.7' << '123e5' ---\r
+int(0)\r
+--- testing: '-7.7' << '123e5xyz' ---\r
+int(0)\r
+--- testing: '-7.7' << ' 123abc' ---\r
+int(0)\r
+--- testing: '-7.7' << '123 abc' ---\r
+int(0)\r
+--- testing: '-7.7' << '123abc ' ---\r
+int(0)\r
+--- testing: '-7.7' << '3.4a' ---\r
+int(-56)\r
+--- testing: '-7.7' << 'a5.9' ---\r
+int(-7)\r
+--- testing: 'abc' << '0' ---\r
+int(0)\r
+--- testing: 'abc' << '65' ---\r
+int(0)\r
+--- testing: 'abc' << '-44' ---\r
+Exception: Bit shift by negative number\r
+--- testing: 'abc' << '1.2' ---\r
+int(0)\r
+--- testing: 'abc' << '-7.7' ---\r
+Exception: Bit shift by negative number\r
+--- testing: 'abc' << 'abc' ---\r
+int(0)\r
+--- testing: 'abc' << '123abc' ---\r
+int(0)\r
+--- testing: 'abc' << '123e5' ---\r
+int(0)\r
+--- testing: 'abc' << '123e5xyz' ---\r
+int(0)\r
+--- testing: 'abc' << ' 123abc' ---\r
+int(0)\r
+--- testing: 'abc' << '123 abc' ---\r
+int(0)\r
+--- testing: 'abc' << '123abc ' ---\r
+int(0)\r
+--- testing: 'abc' << '3.4a' ---\r
+int(0)\r
+--- testing: 'abc' << 'a5.9' ---\r
+int(0)\r
+--- testing: '123abc' << '0' ---\r
+int(123)\r
+--- testing: '123abc' << '65' ---\r
+int(0)\r
+--- testing: '123abc' << '-44' ---\r
+Exception: Bit shift by negative number\r
+--- testing: '123abc' << '1.2' ---\r
+int(246)\r
+--- testing: '123abc' << '-7.7' ---\r
+Exception: Bit shift by negative number\r
+--- testing: '123abc' << 'abc' ---\r
+int(123)\r
+--- testing: '123abc' << '123abc' ---\r
+int(0)\r
+--- testing: '123abc' << '123e5' ---\r
+int(0)\r
+--- testing: '123abc' << '123e5xyz' ---\r
+int(0)\r
+--- testing: '123abc' << ' 123abc' ---\r
+int(0)\r
+--- testing: '123abc' << '123 abc' ---\r
+int(0)\r
+--- testing: '123abc' << '123abc ' ---\r
+int(0)\r
+--- testing: '123abc' << '3.4a' ---\r
+int(984)\r
+--- testing: '123abc' << 'a5.9' ---\r
+int(123)\r
+--- testing: '123e5' << '0' ---\r
+int(123)\r
+--- testing: '123e5' << '65' ---\r
+int(0)\r
+--- testing: '123e5' << '-44' ---\r
+Exception: Bit shift by negative number\r
+--- testing: '123e5' << '1.2' ---\r
+int(246)\r
+--- testing: '123e5' << '-7.7' ---\r
+Exception: Bit shift by negative number\r
+--- testing: '123e5' << 'abc' ---\r
+int(123)\r
+--- testing: '123e5' << '123abc' ---\r
+int(0)\r
+--- testing: '123e5' << '123e5' ---\r
+int(0)\r
+--- testing: '123e5' << '123e5xyz' ---\r
+int(0)\r
+--- testing: '123e5' << ' 123abc' ---\r
+int(0)\r
+--- testing: '123e5' << '123 abc' ---\r
+int(0)\r
+--- testing: '123e5' << '123abc ' ---\r
+int(0)\r
+--- testing: '123e5' << '3.4a' ---\r
+int(984)\r
+--- testing: '123e5' << 'a5.9' ---\r
+int(123)\r
+--- testing: '123e5xyz' << '0' ---\r
+int(123)\r
+--- testing: '123e5xyz' << '65' ---\r
+int(0)\r
+--- testing: '123e5xyz' << '-44' ---\r
+Exception: Bit shift by negative number\r
+--- testing: '123e5xyz' << '1.2' ---\r
+int(246)\r
+--- testing: '123e5xyz' << '-7.7' ---\r
+Exception: Bit shift by negative number\r
+--- testing: '123e5xyz' << 'abc' ---\r
+int(123)\r
+--- testing: '123e5xyz' << '123abc' ---\r
+int(0)\r
+--- testing: '123e5xyz' << '123e5' ---\r
+int(0)\r
+--- testing: '123e5xyz' << '123e5xyz' ---\r
+int(0)\r
+--- testing: '123e5xyz' << ' 123abc' ---\r
+int(0)\r
+--- testing: '123e5xyz' << '123 abc' ---\r
+int(0)\r
+--- testing: '123e5xyz' << '123abc ' ---\r
+int(0)\r
+--- testing: '123e5xyz' << '3.4a' ---\r
+int(984)\r
+--- testing: '123e5xyz' << 'a5.9' ---\r
+int(123)\r
+--- testing: ' 123abc' << '0' ---\r
+int(123)\r
+--- testing: ' 123abc' << '65' ---\r
+int(0)\r
+--- testing: ' 123abc' << '-44' ---\r
+Exception: Bit shift by negative number\r
+--- testing: ' 123abc' << '1.2' ---\r
+int(246)\r
+--- testing: ' 123abc' << '-7.7' ---\r
+Exception: Bit shift by negative number\r
+--- testing: ' 123abc' << 'abc' ---\r
+int(123)\r
+--- testing: ' 123abc' << '123abc' ---\r
+int(0)\r
+--- testing: ' 123abc' << '123e5' ---\r
+int(0)\r
+--- testing: ' 123abc' << '123e5xyz' ---\r
+int(0)\r
+--- testing: ' 123abc' << ' 123abc' ---\r
+int(0)\r
+--- testing: ' 123abc' << '123 abc' ---\r
+int(0)\r
+--- testing: ' 123abc' << '123abc ' ---\r
+int(0)\r
+--- testing: ' 123abc' << '3.4a' ---\r
+int(984)\r
+--- testing: ' 123abc' << 'a5.9' ---\r
+int(123)\r
+--- testing: '123 abc' << '0' ---\r
+int(123)\r
+--- testing: '123 abc' << '65' ---\r
+int(0)\r
+--- testing: '123 abc' << '-44' ---\r
+Exception: Bit shift by negative number\r
+--- testing: '123 abc' << '1.2' ---\r
+int(246)\r
+--- testing: '123 abc' << '-7.7' ---\r
+Exception: Bit shift by negative number\r
+--- testing: '123 abc' << 'abc' ---\r
+int(123)\r
+--- testing: '123 abc' << '123abc' ---\r
+int(0)\r
+--- testing: '123 abc' << '123e5' ---\r
+int(0)\r
+--- testing: '123 abc' << '123e5xyz' ---\r
+int(0)\r
+--- testing: '123 abc' << ' 123abc' ---\r
+int(0)\r
+--- testing: '123 abc' << '123 abc' ---\r
+int(0)\r
+--- testing: '123 abc' << '123abc ' ---\r
+int(0)\r
+--- testing: '123 abc' << '3.4a' ---\r
+int(984)\r
+--- testing: '123 abc' << 'a5.9' ---\r
+int(123)\r
+--- testing: '123abc ' << '0' ---\r
+int(123)\r
+--- testing: '123abc ' << '65' ---\r
+int(0)\r
+--- testing: '123abc ' << '-44' ---\r
+Exception: Bit shift by negative number\r
+--- testing: '123abc ' << '1.2' ---\r
+int(246)\r
+--- testing: '123abc ' << '-7.7' ---\r
+Exception: Bit shift by negative number\r
+--- testing: '123abc ' << 'abc' ---\r
+int(123)\r
+--- testing: '123abc ' << '123abc' ---\r
+int(0)\r
+--- testing: '123abc ' << '123e5' ---\r
+int(0)\r
+--- testing: '123abc ' << '123e5xyz' ---\r
+int(0)\r
+--- testing: '123abc ' << ' 123abc' ---\r
+int(0)\r
+--- testing: '123abc ' << '123 abc' ---\r
+int(0)\r
+--- testing: '123abc ' << '123abc ' ---\r
+int(0)\r
+--- testing: '123abc ' << '3.4a' ---\r
+int(984)\r
+--- testing: '123abc ' << 'a5.9' ---\r
+int(123)\r
+--- testing: '3.4a' << '0' ---\r
+int(3)\r
+--- testing: '3.4a' << '65' ---\r
+int(0)\r
+--- testing: '3.4a' << '-44' ---\r
+Exception: Bit shift by negative number\r
+--- testing: '3.4a' << '1.2' ---\r
+int(6)\r
+--- testing: '3.4a' << '-7.7' ---\r
+Exception: Bit shift by negative number\r
+--- testing: '3.4a' << 'abc' ---\r
+int(3)\r
+--- testing: '3.4a' << '123abc' ---\r
+int(0)\r
+--- testing: '3.4a' << '123e5' ---\r
+int(0)\r
+--- testing: '3.4a' << '123e5xyz' ---\r
+int(0)\r
+--- testing: '3.4a' << ' 123abc' ---\r
+int(0)\r
+--- testing: '3.4a' << '123 abc' ---\r
+int(0)\r
+--- testing: '3.4a' << '123abc ' ---\r
+int(0)\r
+--- testing: '3.4a' << '3.4a' ---\r
+int(24)\r
+--- testing: '3.4a' << 'a5.9' ---\r
+int(3)\r
+--- testing: 'a5.9' << '0' ---\r
+int(0)\r
+--- testing: 'a5.9' << '65' ---\r
+int(0)\r
+--- testing: 'a5.9' << '-44' ---\r
+Exception: Bit shift by negative number\r
+--- testing: 'a5.9' << '1.2' ---\r
+int(0)\r
+--- testing: 'a5.9' << '-7.7' ---\r
+Exception: Bit shift by negative number\r
+--- testing: 'a5.9' << 'abc' ---\r
+int(0)\r
+--- testing: 'a5.9' << '123abc' ---\r
+int(0)\r
+--- testing: 'a5.9' << '123e5' ---\r
+int(0)\r
+--- testing: 'a5.9' << '123e5xyz' ---\r
+int(0)\r
+--- testing: 'a5.9' << ' 123abc' ---\r
+int(0)\r
+--- testing: 'a5.9' << '123 abc' ---\r
+int(0)\r
+--- testing: 'a5.9' << '123abc ' ---\r
+int(0)\r
+--- testing: 'a5.9' << '3.4a' ---\r
+int(0)\r
+--- testing: 'a5.9' << 'a5.9' ---\r
+int(0)\r
+===DONE===\r
index 9083f47b03c3bd6ab6c540d907ddd23098460760..c85c44031238ab18a294bd2c301d0a1edb121f31 100644 (file)
@@ -27,7 +27,7 @@ foreach ($longVals as $longVal) {
          echo "--- testing: $longVal >> $otherVal ---\n";
       try {
         var_dump($longVal>>$otherVal);
-      } catch (Exception $e) {
+      } catch (Throwable $e) {
         echo "Exception: " . $e->getMessage() . "\n";
       }
    }
@@ -38,7 +38,7 @@ foreach ($otherVals as $otherVal) {
          echo "--- testing: $otherVal >> $longVal ---\n";
          try {
         var_dump($otherVal>>$longVal);
-      } catch (Exception $e) {
+      } catch (Throwable $e) {
         echo "Exception: " . $e->getMessage() . "\n";
       }
    }
index 018e9b27e5a39d1b8c5b74f21295ed15f7a2ffbd..1c3277acc8069e08b7c1f68dede1eb364c865130 100644 (file)
@@ -15,7 +15,7 @@ foreach ($strVals as $strVal) {
          echo "--- testing: '$strVal' >> '$otherVal' ---\n";
          try {
         var_dump($strVal>>$otherVal);
-      } catch (Exception $e) {
+      } catch (Throwable $e) {
         echo "Exception: " . $e->getMessage() . "\n";
       }
    }