You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/dev-php/pecl-xrange/files/1.3.2-fixes.patch

134 lines
4.4 KiB

--- 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(&currentValue); /* 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(&currentValue); /* 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)) {