From 7add8aec0045308f62475b4a2fc56427d693b3f8 Mon Sep 17 00:00:00 2001 From: Jeremy Mikola Date: Mon, 4 May 2015 14:40:46 -0400 Subject: [PATCH] Use common return for zval_to_bson() bsonSerialize() error path This also initializes ht_data to NULL just to be safe. --- src/bson.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/bson.c b/src/bson.c index baca0c6e..f0aa4558 100644 --- a/src/bson.c +++ b/src/bson.c @@ -767,7 +767,7 @@ void phongo_bson_append(bson_t *bson, php_phongo_bson_flags_t flags, const char PHONGO_API void zval_to_bson(zval *data, php_phongo_bson_flags_t flags, bson_t *bson, bson_t **bson_out TSRMLS_DC) /* {{{ */ { HashPosition pos; - HashTable *ht_data; + HashTable *ht_data = NULL; zval *obj_data = NULL; switch(Z_TYPE_P(data)) { @@ -777,14 +777,13 @@ PHONGO_API void zval_to_bson(zval *data, php_phongo_bson_flags_t flags, bson_t * if (!obj_data) { /* zend_call_method() failed */ - return; + break; } if (Z_TYPE_P(obj_data) != IS_ARRAY) { phongo_throw_exception(PHONGO_ERROR_UNEXPECTED_VALUE TSRMLS_CC, "Expected %s() to return an array, %s given", BSON_SERIALIZE_FUNC_NAME, zend_get_type_by_const(Z_TYPE_P(obj_data))); - zval_ptr_dtor(&obj_data); - return; + break; } ht_data = HASH_OF(obj_data); @@ -807,7 +806,7 @@ PHONGO_API void zval_to_bson(zval *data, php_phongo_bson_flags_t flags, bson_t * return; } - if (ht_data && ht_data->nApplyCount > 1) { + if (!ht_data || ht_data->nApplyCount > 1) { if (obj_data) { zval_ptr_dtor(&obj_data); }