@@ -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
@@ -364,22 +371,18 @@ static HashTable* php_phongo_bulkwritecommandresult_get_debug_info(zend_object*
364
371
ADD_ASSOC_NULL_EX (& retval , "deleteResults" );
365
372
}
366
373
367
- if ( intern -> write_errors ) {
374
+ {
368
375
zval writeerrors ;
369
376
370
377
php_phongo_bulkwritecommandresult_get_writeerrors (intern , & writeerrors );
371
378
ADD_ASSOC_ZVAL_EX (& retval , "writeErrors" , & writeerrors );
372
- } else {
373
- ADD_ASSOC_NULL_EX (& retval , "writeErrors" );
374
379
}
375
380
376
- if ( intern -> write_concern_errors ) {
381
+ {
377
382
zval writeconcernerrors ;
378
383
379
384
php_phongo_bulkwritecommandresult_get_writeconcernerrors (intern , & writeconcernerrors );
380
385
ADD_ASSOC_ZVAL_EX (& retval , "writeConcernErrors" , & writeconcernerrors );
381
- } else {
382
- ADD_ASSOC_NULL_EX (& retval , "writeConcernErrors" );
383
386
}
384
387
385
388
if (intern -> error_reply ) {
@@ -416,6 +419,11 @@ void php_phongo_bulkwritecommandresult_init_ce(INIT_FUNC_ARGS)
416
419
php_phongo_handler_bulkwritecommandresult .offset = XtOffsetOf (php_phongo_bulkwritecommandresult_t , std );
417
420
}
418
421
422
+ static inline bson_t * _bson_copy_or_null (const bson_t * bson )
423
+ {
424
+ return bson_empty0 (bson ) ? NULL : bson_copy (bson );
425
+ }
426
+
419
427
php_phongo_bulkwritecommandresult_t * phongo_bulkwritecommandresult_init (zval * return_value , mongoc_bulkwritereturn_t * bw_ret , zval * manager )
420
428
{
421
429
php_phongo_bulkwritecommandresult_t * bwcr ;
@@ -433,20 +441,18 @@ php_phongo_bulkwritecommandresult_t* phongo_bulkwritecommandresult_init(zval* re
433
441
bwcr -> modified_count = mongoc_bulkwriteresult_modifiedcount (bw_ret -> res );
434
442
bwcr -> deleted_count = mongoc_bulkwriteresult_deletedcount (bw_ret -> res );
435
443
436
- #define BSON_COPY_OR_NULL (bson ) ((bson) ? bson_copy(bson) : NULL)
437
- bwcr -> insert_results = BSON_COPY_OR_NULL (mongoc_bulkwriteresult_insertresults (bw_ret -> res ));
438
- bwcr -> update_results = BSON_COPY_OR_NULL (mongoc_bulkwriteresult_updateresults (bw_ret -> res ));
439
- bwcr -> delete_results = BSON_COPY_OR_NULL (mongoc_bulkwriteresult_deleteresults (bw_ret -> res ));
440
- #undef BSON_COPY_OR_NULL
444
+ bwcr -> insert_results = _bson_copy_or_null (mongoc_bulkwriteresult_insertresults (bw_ret -> res ));
445
+ bwcr -> update_results = _bson_copy_or_null (mongoc_bulkwriteresult_updateresults (bw_ret -> res ));
446
+ bwcr -> delete_results = _bson_copy_or_null (mongoc_bulkwriteresult_deleteresults (bw_ret -> res ));
441
447
442
448
bwcr -> server_id = mongoc_bulkwriteresult_serverid (bw_ret -> res );
443
449
}
444
450
445
451
// Copy mongoc_bulkwriteexception_t fields
446
452
if (bw_ret -> exc ) {
447
- bwcr -> error_reply = bson_copy (mongoc_bulkwriteexception_errorreply (bw_ret -> exc ));
448
- bwcr -> write_errors = bson_copy (mongoc_bulkwriteexception_writeerrors (bw_ret -> exc ));
449
- bwcr -> write_concern_errors = bson_copy (mongoc_bulkwriteexception_writeconcernerrors (bw_ret -> exc ));
453
+ bwcr -> error_reply = _bson_copy_or_null (mongoc_bulkwriteexception_errorreply (bw_ret -> exc ));
454
+ bwcr -> write_errors = _bson_copy_or_null (mongoc_bulkwriteexception_writeerrors (bw_ret -> exc ));
455
+ bwcr -> write_concern_errors = _bson_copy_or_null (mongoc_bulkwriteexception_writeconcernerrors (bw_ret -> exc ));
450
456
}
451
457
452
458
ZVAL_ZVAL (& bwcr -> manager , manager , 1 , 0 );
0 commit comments