Commit 7d343715 authored by Bo Yang's avatar Bo Yang

Fix memory leak when creating map field via array.

parent e0d3aa05
...@@ -534,8 +534,7 @@ void check_map_field(const zend_class_entry* klass, PHP_PROTO_LONG key_type, ...@@ -534,8 +534,7 @@ void check_map_field(const zend_class_entry* klass, PHP_PROTO_LONG key_type,
CACHED_PTR_TO_ZVAL_PTR((CACHED_VALUE*)value) TSRMLS_CC); CACHED_PTR_TO_ZVAL_PTR((CACHED_VALUE*)value) TSRMLS_CC);
} }
Z_DELREF_P(CACHED_TO_ZVAL_PTR(map_field)); RETURN_ZVAL(CACHED_TO_ZVAL_PTR(map_field), 1, 1);
RETURN_ZVAL(CACHED_TO_ZVAL_PTR(map_field), 1, 0);
} else if (Z_TYPE_P(val) == IS_OBJECT) { } else if (Z_TYPE_P(val) == IS_OBJECT) {
if (!instanceof_function(Z_OBJCE_P(val), map_field_type TSRMLS_CC)) { if (!instanceof_function(Z_OBJCE_P(val), map_field_type TSRMLS_CC)) {
zend_error(E_USER_ERROR, "Given value is not an instance of %s.", zend_error(E_USER_ERROR, "Given value is not an instance of %s.",
......
...@@ -110,6 +110,11 @@ $str_arr = array(); ...@@ -110,6 +110,11 @@ $str_arr = array();
$m = new TestMessage(); $m = new TestMessage();
$m->setRepeatedString($str_arr); $m->setRepeatedString($str_arr);
// Test create map field via array.
$str_arr = array();
$m = new TestMessage();
$m->setMapStringString($str_arr);
# $from = new TestMessage(); # $from = new TestMessage();
# $to = new TestMessage(); # $to = new TestMessage();
# TestUtil::setTestMessage($from); # TestUtil::setTestMessage($from);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment