aboutsummaryrefslogtreecommitdiffhomepage
path: root/php/ext
diff options
context:
space:
mode:
authorGravatar Bo Yang <teboring@google.com>2017-12-05 16:44:19 -0800
committerGravatar Bo Yang <teboring@google.com>2017-12-06 10:38:18 -0800
commit3b7a5f451546888ad96aaa143ef86fea904a03ec (patch)
treeb0ed22f963a6caaf360424bcdf14f078f051d312 /php/ext
parent7d3437152ad420d4382b883f0a52a86526166ef5 (diff)
Fix several more memory leak
Diffstat (limited to 'php/ext')
-rw-r--r--php/ext/google/protobuf/def.c1
-rw-r--r--php/ext/google/protobuf/message.c8
-rw-r--r--php/ext/google/protobuf/type_check.c1
3 files changed, 6 insertions, 4 deletions
diff --git a/php/ext/google/protobuf/def.c b/php/ext/google/protobuf/def.c
index 13f7cdd6..55291e23 100644
--- a/php/ext/google/protobuf/def.c
+++ b/php/ext/google/protobuf/def.c
@@ -249,6 +249,7 @@ PHP_METHOD(Descriptor, getField) {
MAKE_STD_ZVAL(field_hashtable_value);
ZVAL_OBJ(field_hashtable_value, field_descriptor_type->create_object(
field_descriptor_type TSRMLS_CC));
+ Z_DELREF_P(field_hashtable_value);
#else
field_hashtable_value =
field_descriptor_type->create_object(field_descriptor_type TSRMLS_CC);
diff --git a/php/ext/google/protobuf/message.c b/php/ext/google/protobuf/message.c
index 3fce2c17..b11c7215 100644
--- a/php/ext/google/protobuf/message.c
+++ b/php/ext/google/protobuf/message.c
@@ -374,7 +374,7 @@ PHP_METHOD(Message, whichOneof) {
LOWER_FIELD) \
PHP_METHOD(UPPER_CLASS, get##UPPER_FIELD) { \
zval member; \
- PHP_PROTO_ZVAL_STRING(&member, LOWER_FIELD, 1); \
+ PHP_PROTO_ZVAL_STRING(&member, LOWER_FIELD, 0); \
PHP_PROTO_FAKE_SCOPE_BEGIN(LOWER_CLASS##_type); \
zval* value = message_get_property_internal(getThis(), &member TSRMLS_CC); \
PHP_PROTO_FAKE_SCOPE_END; \
@@ -387,7 +387,7 @@ PHP_METHOD(Message, whichOneof) {
return; \
} \
zval member; \
- PHP_PROTO_ZVAL_STRING(&member, LOWER_FIELD, 1); \
+ PHP_PROTO_ZVAL_STRING(&member, LOWER_FIELD, 0); \
message_set_property_internal(getThis(), &member, value TSRMLS_CC); \
PHP_PROTO_RETVAL_ZVAL(getThis()); \
}
@@ -396,7 +396,7 @@ PHP_METHOD(Message, whichOneof) {
LOWER_FIELD) \
PHP_METHOD(UPPER_CLASS, get##UPPER_FIELD) { \
zval member; \
- PHP_PROTO_ZVAL_STRING(&member, LOWER_FIELD, 1); \
+ PHP_PROTO_ZVAL_STRING(&member, LOWER_FIELD, 0); \
PHP_PROTO_FAKE_SCOPE_BEGIN(LOWER_CLASS##_type); \
message_get_oneof_property_internal(getThis(), &member, \
return_value TSRMLS_CC); \
@@ -409,7 +409,7 @@ PHP_METHOD(Message, whichOneof) {
return; \
} \
zval member; \
- PHP_PROTO_ZVAL_STRING(&member, LOWER_FIELD, 1); \
+ PHP_PROTO_ZVAL_STRING(&member, LOWER_FIELD, 0); \
message_set_property_internal(getThis(), &member, value TSRMLS_CC); \
PHP_PROTO_RETVAL_ZVAL(getThis()); \
}
diff --git a/php/ext/google/protobuf/type_check.c b/php/ext/google/protobuf/type_check.c
index 37171426..85f5051e 100644
--- a/php/ext/google/protobuf/type_check.c
+++ b/php/ext/google/protobuf/type_check.c
@@ -532,6 +532,7 @@ void check_map_field(const zend_class_entry* klass, PHP_PROTO_LONG key_type,
map_field_handlers->write_dimension(
CACHED_TO_ZVAL_PTR(map_field), &key,
CACHED_PTR_TO_ZVAL_PTR((CACHED_VALUE*)value) TSRMLS_CC);
+ zval_dtor(&key);
}
RETURN_ZVAL(CACHED_TO_ZVAL_PTR(map_field), 1, 1);