mirror of
https://github.com/php/php-src.git
synced 2026-04-27 10:16:41 +02:00
- Fixed a memleak (Original patch by Hannes Magnusson).
This commit is contained in:
+6
-2
@@ -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));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user