@@ -1000,7 +1000,8 @@ mongoc_collection_get_index_info (mongoc_collection_t *collection,
1000
1000
bool cmd_success ;
1001
1001
mongoc_read_prefs_t * read_prefs ;
1002
1002
bson_t cmd = BSON_INITIALIZER ;
1003
- bson_t * reply = bson_new ();
1003
+ bson_t command_reply ;
1004
+ bson_t * reply = NULL ;
1004
1005
1005
1006
BSON_ASSERT (collection );
1006
1007
@@ -1010,32 +1011,30 @@ mongoc_collection_get_index_info (mongoc_collection_t *collection,
1010
1011
read_prefs = mongoc_read_prefs_new (MONGOC_READ_PRIMARY );
1011
1012
1012
1013
cmd_success = mongoc_collection_command_simple (collection , & cmd , NULL ,
1013
- reply , error );
1014
+ & command_reply , error );
1014
1015
1015
1016
if (cmd_success ) {
1016
1017
/* intentionally empty */
1018
+ reply = bson_copy (& command_reply );
1017
1019
} else if (error -> code == MONGOC_ERROR_COLLECTION_DOES_NOT_EXIST ) {
1018
1020
bson_t empty_arr = BSON_INITIALIZER ;
1019
1021
/* collection does not exist. in accordance with the spec we return
1020
1022
* an empty array. Also we need to clear out the error. */
1021
1023
error -> code = 0 ;
1022
1024
error -> domain = 0 ;
1023
- BSON_APPEND_ARRAY (reply , "indexes" , & empty_arr );
1025
+ BSON_APPEND_ARRAY (& command_reply , "indexes" , & empty_arr );
1026
+ reply = bson_copy (& command_reply );
1024
1027
} else if (error -> code == MONGOC_ERROR_QUERY_COMMAND_NOT_FOUND ) {
1025
- bson_destroy (reply );
1026
1028
/* talking to an old server. */
1027
1029
/* clear out error. */
1028
1030
error -> code = 0 ;
1029
1031
error -> domain = 0 ;
1030
1032
reply =
1031
1033
_mongoc_collection_get_index_info_legacy (collection , error );
1032
- } else {
1033
- /* network error */
1034
- bson_destroy (reply );
1035
- reply = NULL ;
1036
1034
}
1037
1035
1038
1036
bson_destroy (& cmd );
1037
+ bson_destroy (& command_reply );
1039
1038
mongoc_read_prefs_destroy (read_prefs );
1040
1039
1041
1040
return reply ;
0 commit comments