Skip to content

Commit 865078c

Browse files
committed
Fixed 'dump on uninitialised value' with BSON deserialisation
1 parent c0d4f60 commit 865078c

File tree

1 file changed

+12
-6
lines changed

1 file changed

+12
-6
lines changed

src/bson.c

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1190,9 +1190,15 @@ PHONGO_API void zval_to_bson(zval *data, php_phongo_bson_flags_t flags, bson_t *
11901190
}
11911191

11921192
if (!ht_data || ZEND_HASH_APPLY_COUNT(ht_data) > 1) {
1193-
if (!Z_ISUNDEF(obj_data)) {
1194-
zval_ptr_dtor(&obj_data);
1193+
#if PHP_VERSION_ID >= 70000
1194+
if (Z_TYPE_P(data) == IS_OBJECT && instanceof_function(Z_OBJCE_P(data), php_phongo_serializable_ce TSRMLS_CC)) {
1195+
#endif
1196+
if (!Z_ISUNDEF(obj_data)) {
1197+
zval_ptr_dtor(&obj_data);
1198+
}
1199+
#if PHP_VERSION_ID >= 70000
11951200
}
1201+
#endif
11961202
return;
11971203
}
11981204

@@ -1307,15 +1313,15 @@ PHONGO_API void zval_to_bson(zval *data, php_phongo_bson_flags_t flags, bson_t *
13071313
}
13081314
}
13091315
}
1310-
if (!Z_ISUNDEF(obj_data)) {
13111316
#if PHP_VERSION_ID >= 70000
1312-
if (Z_TYPE_P(data) == IS_OBJECT && instanceof_function(Z_OBJCE_P(data), php_phongo_serializable_ce TSRMLS_CC)) {
1317+
if (Z_TYPE_P(data) == IS_OBJECT && instanceof_function(Z_OBJCE_P(data), php_phongo_serializable_ce TSRMLS_CC)) {
13131318
#endif
1319+
if (!Z_ISUNDEF(obj_data)) {
13141320
zval_ptr_dtor(&obj_data);
1315-
#if PHP_VERSION_ID >= 70000
13161321
}
1317-
#endif
1322+
#if PHP_VERSION_ID >= 70000
13181323
}
1324+
#endif
13191325
}
13201326

13211327
/* }}} */

0 commit comments

Comments
 (0)