@@ -45,6 +45,10 @@ static bool php_phongo_bulkwritecommandresult_get_writeconcernerrors(php_phongo_
45
45
46
46
array_init (return_value );
47
47
48
+ if (!intern -> write_concern_errors ) {
49
+ return true;
50
+ }
51
+
48
52
for (bson_iter_init (& iter , intern -> write_concern_errors ); bson_iter_next (& iter );) {
49
53
bson_t bson ;
50
54
uint32_t len ;
@@ -78,6 +82,10 @@ static bool php_phongo_bulkwritecommandresult_get_writeerrors(php_phongo_bulkwri
78
82
79
83
array_init (return_value );
80
84
85
+ if (!intern -> write_errors ) {
86
+ return true;
87
+ }
88
+
81
89
for (bson_iter_init (& iter , intern -> write_errors ); bson_iter_next (& iter );) {
82
90
bson_t bson ;
83
91
uint32_t len ;
@@ -246,7 +254,6 @@ static PHP_METHOD(MongoDB_Driver_BulkWriteCommandResult, getWriteConcernErrors)
246
254
247
255
PHONGO_PARSE_PARAMETERS_NONE ();
248
256
249
- // TODO: null handling
250
257
php_phongo_bulkwritecommandresult_get_writeconcernerrors (intern , return_value );
251
258
}
252
259
@@ -259,7 +266,6 @@ static PHP_METHOD(MongoDB_Driver_BulkWriteCommandResult, getWriteErrors)
259
266
260
267
PHONGO_PARSE_PARAMETERS_NONE ();
261
268
262
- // TODO: null handling
263
269
php_phongo_bulkwritecommandresult_get_writeerrors (intern , return_value );
264
270
}
265
271
@@ -271,8 +277,9 @@ static PHP_METHOD(MongoDB_Driver_BulkWriteCommandResult, getErrorReply)
271
277
272
278
PHONGO_PARSE_PARAMETERS_NONE ();
273
279
274
- // TODO: null handling
275
- phongo_document_new (return_value , intern -> error_reply , true);
280
+ if (intern -> error_reply ) {
281
+ phongo_document_new (return_value , intern -> error_reply , true);
282
+ }
276
283
}
277
284
278
285
/* Returns whether the write operation was acknowledged (based on the write
@@ -381,22 +388,18 @@ static HashTable* php_phongo_bulkwritecommandresult_get_debug_info(zend_object*
381
388
ADD_ASSOC_NULL_EX (& retval , "deleteResults" );
382
389
}
383
390
384
- if ( intern -> write_errors ) {
391
+ {
385
392
zval writeerrors ;
386
393
387
394
php_phongo_bulkwritecommandresult_get_writeerrors (intern , & writeerrors );
388
395
ADD_ASSOC_ZVAL_EX (& retval , "writeErrors" , & writeerrors );
389
- } else {
390
- ADD_ASSOC_NULL_EX (& retval , "writeErrors" );
391
396
}
392
397
393
- if ( intern -> write_concern_errors ) {
398
+ {
394
399
zval writeconcernerrors ;
395
400
396
401
php_phongo_bulkwritecommandresult_get_writeconcernerrors (intern , & writeconcernerrors );
397
402
ADD_ASSOC_ZVAL_EX (& retval , "writeConcernErrors" , & writeconcernerrors );
398
- } else {
399
- ADD_ASSOC_NULL_EX (& retval , "writeConcernErrors" );
400
403
}
401
404
402
405
if (intern -> error_reply ) {
@@ -433,6 +436,11 @@ void php_phongo_bulkwritecommandresult_init_ce(INIT_FUNC_ARGS)
433
436
php_phongo_handler_bulkwritecommandresult .offset = XtOffsetOf (php_phongo_bulkwritecommandresult_t , std );
434
437
}
435
438
439
+ static inline bson_t * _bson_copy_or_null (const bson_t * bson )
440
+ {
441
+ return bson_empty0 (bson ) ? NULL : bson_copy (bson );
442
+ }
443
+
436
444
php_phongo_bulkwritecommandresult_t * phongo_bulkwritecommandresult_init (zval * return_value , mongoc_bulkwritereturn_t * bw_ret , zval * manager )
437
445
{
438
446
php_phongo_bulkwritecommandresult_t * bwcr ;
@@ -450,20 +458,18 @@ php_phongo_bulkwritecommandresult_t* phongo_bulkwritecommandresult_init(zval* re
450
458
bwcr -> modified_count = mongoc_bulkwriteresult_modifiedcount (bw_ret -> res );
451
459
bwcr -> deleted_count = mongoc_bulkwriteresult_deletedcount (bw_ret -> res );
452
460
453
- #define BSON_COPY_OR_NULL (bson ) ((bson) ? bson_copy(bson) : NULL)
454
- bwcr -> insert_results = BSON_COPY_OR_NULL (mongoc_bulkwriteresult_insertresults (bw_ret -> res ));
455
- bwcr -> update_results = BSON_COPY_OR_NULL (mongoc_bulkwriteresult_updateresults (bw_ret -> res ));
456
- bwcr -> delete_results = BSON_COPY_OR_NULL (mongoc_bulkwriteresult_deleteresults (bw_ret -> res ));
457
- #undef BSON_COPY_OR_NULL
461
+ bwcr -> insert_results = _bson_copy_or_null (mongoc_bulkwriteresult_insertresults (bw_ret -> res ));
462
+ bwcr -> update_results = _bson_copy_or_null (mongoc_bulkwriteresult_updateresults (bw_ret -> res ));
463
+ bwcr -> delete_results = _bson_copy_or_null (mongoc_bulkwriteresult_deleteresults (bw_ret -> res ));
458
464
459
465
bwcr -> server_id = mongoc_bulkwriteresult_serverid (bw_ret -> res );
460
466
}
461
467
462
468
// Copy mongoc_bulkwriteexception_t fields
463
469
if (bw_ret -> exc ) {
464
- bwcr -> error_reply = bson_copy (mongoc_bulkwriteexception_errorreply (bw_ret -> exc ));
465
- bwcr -> write_errors = bson_copy (mongoc_bulkwriteexception_writeerrors (bw_ret -> exc ));
466
- bwcr -> write_concern_errors = bson_copy (mongoc_bulkwriteexception_writeconcernerrors (bw_ret -> exc ));
470
+ bwcr -> error_reply = _bson_copy_or_null (mongoc_bulkwriteexception_errorreply (bw_ret -> exc ));
471
+ bwcr -> write_errors = _bson_copy_or_null (mongoc_bulkwriteexception_writeerrors (bw_ret -> exc ));
472
+ bwcr -> write_concern_errors = _bson_copy_or_null (mongoc_bulkwriteexception_writeconcernerrors (bw_ret -> exc ));
467
473
}
468
474
469
475
ZVAL_ZVAL (& bwcr -> manager , manager , 1 , 0 );
0 commit comments