From: Derick Rethans Date: Tue, 8 Jul 2008 19:29:06 +0000 (+0000) Subject: - Fixed a memleak (Original patch by Hannes Magnusson). X-Git-Tag: BEFORE_HEAD_NS_CHANGE~1336 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d5bc2d0682a2ba53985a0a50c490f729bebf4d8a;p=php - Fixed a memleak (Original patch by Hannes Magnusson). --- diff --git a/ext/date/php_date.c b/ext/date/php_date.c index 935514e381..3cf90db202 100644 --- a/ext/date/php_date.c +++ b/ext/date/php_date.c @@ -3317,11 +3317,13 @@ zval *date_interval_read_property(zval *object, zval *member, int type TSRMLS_DC GET_VALUE_FROM_STRUCT(invert, "invert"); GET_VALUE_FROM_STRUCT(days, "days"); + ALLOC_INIT_ZVAL(retval); + Z_SET_REFCOUNT_P(retval, 0); + if (value == -1) { php_error_docref(NULL TSRMLS_CC, E_ERROR, "Unknown property (%s)", Z_STRVAL_P(member)); } - ALLOC_INIT_ZVAL(retval); ZVAL_LONG(retval, value); if (member == &tmp_member) { @@ -3337,6 +3339,7 @@ void date_interval_write_property(zval *object, zval *member, zval *value TSRMLS { php_interval_obj *obj; zval tmp_member, tmp_value; + int found = 0; if (member->type != IS_STRING) { tmp_member = *member; @@ -3354,6 +3357,7 @@ void date_interval_write_property(zval *object, zval *member, zval *value TSRMLS convert_to_long(&tmp_value); \ value = &tmp_value; \ } \ + found = 1; \ obj->diff->n = Z_LVAL_P(value); \ if (value == &tmp_value) { \ zval_dtor(value); \ @@ -3368,7 +3372,7 @@ void date_interval_write_property(zval *object, zval *member, zval *value TSRMLS SET_VALUE_FROM_STRUCT(s, "s"); SET_VALUE_FROM_STRUCT(invert, "invert"); - if (value == -1) { + if (!found) { php_error_docref(NULL TSRMLS_CC, E_ERROR, "Unknown property (%s)", Z_STRVAL_P(member)); }