diff options
Diffstat (limited to 'dev-php/pecl-xrange/files/1.3.2-fixes.patch')
-rw-r--r-- | dev-php/pecl-xrange/files/1.3.2-fixes.patch | 133 |
1 files changed, 133 insertions, 0 deletions
diff --git a/dev-php/pecl-xrange/files/1.3.2-fixes.patch b/dev-php/pecl-xrange/files/1.3.2-fixes.patch new file mode 100644 index 000000000000..4664a5d1feb2 --- /dev/null +++ b/dev-php/pecl-xrange/files/1.3.2-fixes.patch @@ -0,0 +1,133 @@ +--- a/xrange.c 2012/07/28 23:20:09 326859 ++++ b/xrange.c 2013/10/06 11:48:38 331707 +@@ -175,21 +175,21 @@ + zend_class_implements(php_xrange_xri_entry TSRMLS_CC, 1, spl_ce_Countable); + + /* Register Class: OddFilterIterator */ +- memset(&ce, sizeof(ce), '\0'); ++ memset(&ce, 0, sizeof(ce)); + INIT_CLASS_ENTRY(ce, PHP_XRANGE_ODDFILTERITERATOR_NAME, php_xrange_OddFilterIterator_functions); + ce.name_length = strlen(PHP_XRANGE_ODDFILTERITERATOR_NAME); + php_xrange_OddFilterIterator_entry = + zend_register_internal_class_ex(&ce, spl_ce_FilterIterator, NULL TSRMLS_CC); + + /* Register Class: EvenFilterIterator */ +- memset(&ce, sizeof(ce), '\0'); ++ memset(&ce, 0, sizeof(ce)); + INIT_CLASS_ENTRY(ce, PHP_XRANGE_EVENFILTERITERATOR_NAME, php_xrange_EvenFilterIterator_functions); + ce.name_length = strlen(PHP_XRANGE_EVENFILTERITERATOR_NAME); + php_xrange_EvenFilterIterator_entry = + zend_register_internal_class_ex(&ce, spl_ce_FilterIterator, NULL TSRMLS_CC); + + /* Register Class: NumericFilterIterator */ +- memset(&ce, sizeof(ce), '\0'); ++ memset(&ce, 0, sizeof(ce)); + INIT_CLASS_ENTRY(ce, PHP_XRANGE_NUMERICFILTERITERATOR_NAME, php_xrange_NumericFilterIterator_functions); + ce.name_length = strlen(PHP_XRANGE_NUMERICFILTERITERATOR_NAME); + php_xrange_NumericFilterIterator_entry = +@@ -225,13 +225,16 @@ + { + if (return_value_used) { + int param_count = ZEND_NUM_ARGS(); ++ zval ***params; ++ zval *retval = NULL; ++ zval methodName; + + /* because I'm passing the arguments as an array, I'll need to manually + check arg length. */ + if (param_count != 2 && param_count != 3) WRONG_PARAM_COUNT; + + /* retrieve the function's argument list */ +- zval ***params = (zval ***) safe_emalloc(param_count, sizeof(zval*), 0); ++ params = (zval ***) safe_emalloc(param_count, sizeof(zval*), 0); + if (zend_get_parameters_array_ex(param_count, params) == FAILURE) { + efree(params); + WRONG_PARAM_COUNT; +@@ -244,8 +247,6 @@ + ); + + /* setup call to XRangeIterator's constructor (must do manually) */ +- zval *retval = NULL; +- zval methodName; + ZVAL_STRING(&methodName, "__construct", 0); + + /* pass all arguments through to the XRangeIterator constructor */ +@@ -286,6 +287,9 @@ + Return a configured range iterator / generator */ + PHP_METHOD(PHP_XRANGE_XRI_NAME, __construct) + { ++ xrange_module_storage *internalStorage; ++ double iterations; ++ + if (!getThis()) { + php_error_docref( + NULL TSRMLS_CC, E_WARNING, "Don't call the constructor statically" +@@ -293,7 +297,7 @@ + RETURN_FALSE; + } + +- xrange_module_storage *internalStorage = PHP_XRANGE_ZOS_GET; ++ internalStorage = PHP_XRANGE_ZOS_GET; + + /* parse argument list */ + internalStorage->step = 1.0; /* default */ +@@ -322,7 +326,7 @@ + ) internalStorage->step *= -1; + + /* calculate the total number of iterations before completion */ +- double iterations = fabs( ++ iterations = fabs( + (internalStorage->high - internalStorage->low) / internalStorage->step + ); + +@@ -453,6 +457,7 @@ + PHP_METHOD(PHP_XRANGE_ODDFILTERITERATOR_NAME, accept) + { + zval *currentValue; ++ int isOdd; + + // method A: bypass getInnerIterator() call + spl_dual_it_object *intern = +@@ -464,7 +469,7 @@ + // TODO: method B - use getInnerIterator() w/ compilation option + + if (Z_TYPE_P(currentValue) != IS_LONG) convert_to_long(currentValue); +- int isOdd = Z_LVAL_P(currentValue) & 1; ++ isOdd = Z_LVAL_P(currentValue) & 1; + + zval_ptr_dtor(¤tValue); /* clean-up */ + RETURN_BOOL(isOdd); +@@ -476,6 +481,7 @@ + PHP_METHOD(PHP_XRANGE_EVENFILTERITERATOR_NAME, accept) + { + zval *currentValue; ++ int isEven; + + /* method A: bypass getInnerIterator() call */ + spl_dual_it_object *intern = +@@ -487,7 +493,7 @@ + /* TODO: method B - use getInnerIterator() w/ compilation option */ + + if (Z_TYPE_P(currentValue) != IS_LONG) convert_to_long(currentValue); +- int isEven = !(Z_LVAL_P(currentValue) & 1); ++ isEven = !(Z_LVAL_P(currentValue) & 1); + + zval_ptr_dtor(¤tValue); /* clean-up */ + RETURN_BOOL(isEven); +@@ -499,6 +505,7 @@ + PHP_METHOD(PHP_XRANGE_NUMERICFILTERITERATOR_NAME, accept) + { + zval *currentValue; ++ int isNumeric; + + /* method A: bypass getInnerIterator() call */ + spl_dual_it_object *intern = +@@ -509,8 +516,6 @@ + ); + /* TODO: method B - use getInnerIterator() w/ compilation option */ + +- int isNumeric; +- + /* this code comes from is_numeric() the implementation. it's here to + * to eliminate the overhead of a PHP function call. */ + switch (Z_TYPE_P(currentValue)) { |