-
Type: Bug
-
Resolution: Gone away
-
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; };
//Of course the real url would be different, not "my_server", but I can't share the company url with you
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