Skip to content

Commit 4e21980

Browse files
committed
CDRIVER-1919: Fix return value
1 parent d18a47d commit 4e21980

File tree

1 file changed

+18
-6
lines changed

1 file changed

+18
-6
lines changed

src/mongoc/mongoc-cursor.c

+18-6
Original file line numberDiff line numberDiff line change
@@ -886,6 +886,18 @@ _mongoc_cursor_monitor_failed (mongoc_cursor_t *cursor,
886886
BSON_APPEND_DOCUMENT (query, "$" #_legacy_name, &subdocument); \
887887
} while (false)
888888

889+
#define ADD_FLAG(_flags, _value) do { \
890+
if (!BSON_ITER_HOLDS_BOOL(&iter)) { \
891+
bson_set_error (&cursor->error, \
892+
MONGOC_ERROR_COMMAND, \
893+
MONGOC_ERROR_COMMAND_INVALID_ARG, \
894+
"invalid option %s, should be type bool", key); \
895+
return false; \
896+
} \
897+
if (bson_iter_as_bool (&iter)) { \
898+
*_flags |= _value; \
899+
} \
900+
} while (false);
889901

890902
static bool
891903
_mongoc_cursor_flags (mongoc_cursor_t *cursor,
@@ -907,17 +919,17 @@ _mongoc_cursor_flags (mongoc_cursor_t *cursor,
907919
key = bson_iter_key (&iter);
908920

909921
if (!strcmp (key, ALLOW_PARTIAL_RESULTS)) {
910-
OPT_FLAG (MONGOC_QUERY_PARTIAL);
922+
ADD_FLAG (flags, MONGOC_QUERY_PARTIAL);
911923
} else if (!strcmp (key, AWAIT_DATA)) {
912-
OPT_FLAG (MONGOC_QUERY_AWAIT_DATA);
924+
ADD_FLAG (flags, MONGOC_QUERY_AWAIT_DATA);
913925
} else if (!strcmp (key, EXHAUST)) {
914-
OPT_FLAG (MONGOC_QUERY_EXHAUST);
926+
ADD_FLAG (flags, MONGOC_QUERY_EXHAUST);
915927
} else if (!strcmp (key, NO_CURSOR_TIMEOUT)) {
916-
OPT_FLAG (MONGOC_QUERY_NO_CURSOR_TIMEOUT);
928+
ADD_FLAG (flags, MONGOC_QUERY_NO_CURSOR_TIMEOUT);
917929
} else if (!strcmp (key, OPLOG_REPLAY)) {
918-
OPT_FLAG (MONGOC_QUERY_OPLOG_REPLAY);
930+
ADD_FLAG (flags, MONGOC_QUERY_OPLOG_REPLAY);
919931
} else if (!strcmp (key, TAILABLE)) {
920-
OPT_FLAG (MONGOC_QUERY_TAILABLE_CURSOR);
932+
ADD_FLAG (flags, MONGOC_QUERY_TAILABLE_CURSOR);
921933
}
922934
}
923935

0 commit comments

Comments
 (0)