Details
-
Bug
-
Status: Closed
-
Major - P3
-
Resolution: Duplicate
-
3.4.0
-
None
-
None
-
Windows
Description
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