Skip to content

Commit e6af99d

Browse files
committed
CDRIVER-5789 Workaround missing __cdecl in mongoc_log_func_t
1 parent f1e60cc commit e6af99d

File tree

3 files changed

+18
-1
lines changed

3 files changed

+18
-1
lines changed

src/mongocxx/lib/mongocxx/v_noabi/mongocxx/private/libmongoc.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ namespace libmongoc {
3333
#include "libmongoc_symbols.hh"
3434
#undef MONGOCXX_LIBMONGOC_SYMBOL
3535

36+
mongocxx::test_util::mock<log_set_handler_cdecl_t>& log_set_handler =
37+
*new test_util::mock<log_set_handler_cdecl_t>(mongoc_log_set_handler);
38+
3639
#if defined(__GNUC__) && (__GNUC__ >= 6) && !defined(__clang__)
3740
#pragma GCC diagnostic pop
3841
#endif

src/mongocxx/lib/mongocxx/v_noabi/mongocxx/private/libmongoc.hh

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,17 @@ namespace libmongoc {
5959
#include "libmongoc_symbols.hh"
6060
#undef MONGOCXX_LIBMONGOC_SYMBOL
6161

62+
// CDRIVER-5678
63+
using log_func_cdecl_t = void(MONGOCXX_ABI_CDECL*)(mongoc_log_level_t log_level,
64+
const char* log_domain,
65+
const char* message,
66+
void* user_data);
67+
using log_set_handler_cdecl_t = void(MONGOCXX_ABI_CDECL*)(log_func_cdecl_t log_func,
68+
void* user_data);
69+
70+
extern MONGOCXX_ABI_EXPORT_TESTING mongocxx::test_util::mock<log_set_handler_cdecl_t>&
71+
log_set_handler;
72+
6273
#if defined(__GNUC__) && (__GNUC__ >= 6) && !defined(__clang__)
6374
#pragma GCC diagnostic pop
6475
#endif
@@ -69,6 +80,9 @@ namespace libmongoc {
6980
#include "libmongoc_symbols.hh"
7081
#undef MONGOCXX_LIBMONGOC_SYMBOL
7182

83+
// CDRIVER-5678
84+
constexpr auto log_set_handler = mongoc_log_set_handler;
85+
7286
#endif
7387

7488
} // namespace libmongoc

src/mongocxx/lib/mongocxx/v_noabi/mongocxx/private/libmongoc_symbols.hh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -278,7 +278,7 @@ MONGOCXX_LIBMONGOC_SYMBOL(index_opt_geo_init)
278278
MONGOCXX_LIBMONGOC_SYMBOL(index_opt_init)
279279
MONGOCXX_LIBMONGOC_SYMBOL(index_opt_wt_init)
280280
MONGOCXX_LIBMONGOC_SYMBOL(init)
281-
MONGOCXX_LIBMONGOC_SYMBOL(log_set_handler)
281+
// MONGOCXX_LIBMONGOC_SYMBOL(log_set_handler) // CDRIVER-5678: not __cdecl.
282282
MONGOCXX_LIBMONGOC_SYMBOL(read_concern_copy)
283283
MONGOCXX_LIBMONGOC_SYMBOL(read_concern_destroy)
284284
MONGOCXX_LIBMONGOC_SYMBOL(read_concern_get_level)

0 commit comments

Comments
 (0)