-
Type: Bug
-
Resolution: Duplicate
-
Priority: Major - P3
-
None
-
Affects Version/s: 3.4.0
-
Component/s: Implementation
-
None
-
Environment:Windows
Hi All,
If I simply call this function:
mongocxx::uri uri = mongocxx::uri(ServerSetup::mongoUri().c_str());
with C type char* parameter like above, it works, but if I call it with a c++ type string like this:
mongocxx::uri uri = mongocxx::uri(ServerSetup::mongoUri());
then it crashes with null pointer. See the message in file attachment.
My full code is the following:
#include <cstdint> #include <iostream> #include <vector> #include <string> #include <mongocxx/instance.hpp> #include <bsoncxx/json.hpp> #include <bsoncxx/string/view_or_value.hpp> #include <mongocxx/client.hpp> #include <mongocxx/collection.hpp> #include <mongocxx/stdx.hpp> #include <mongocxx/uri.hpp> class ServerSetup { public: const static std::string& mongoUri(); private: static std::string MongoUri; }; std::string ServerSetup::MongoUri = "mongodb://my_server/?ssl=true"; const std::string& ServerSetup::mongoUri() { return MongoUri; } int main() { try { mongocxx::instance instance{}; mongocxx::uri uri = mongocxx::uri(ServerSetup::mongoUri()); } catch (std::exception& ex) { std::cout << "std::excetpion caught: " << ex.what(); } catch (...) { std::cout << "unknown excetpion caught"; } return 0; }
It doesn't seem to be correct.
(It doesn't work with either non-static string parameter, but I then I got an exception, like "an invalid MongoDB URI was provided". But the non-static string was working if I convert it with c_str() as above.)
Please me with this issue.
Regards,
Balázs