setMessage to nullptr should free memory
parent
5f31638210
commit
e20c32a4fc
|
@ -63,6 +63,7 @@ const char * HttpRequest::getUrl() const
|
||||||
const char * HttpRequest::setMessage(const char * str)
|
const char * HttpRequest::setMessage(const char * str)
|
||||||
{
|
{
|
||||||
if (str == nullptr) {
|
if (str == nullptr) {
|
||||||
|
if (this->message != nullptr) free(this->message);
|
||||||
this->message = nullptr;
|
this->message = nullptr;
|
||||||
message_length = 0;
|
message_length = 0;
|
||||||
return this->message;
|
return this->message;
|
||||||
|
@ -71,12 +72,16 @@ const char * HttpRequest::setMessage(const char * str)
|
||||||
return this->setMessage(str, len);
|
return this->setMessage(str, len);
|
||||||
}
|
}
|
||||||
|
|
||||||
const char * HttpRequest::setMessage(const char * message, unsigned int n)
|
const char * HttpRequest::setMessage(const char * str, unsigned int n)
|
||||||
{
|
{
|
||||||
if (this->message) free(this->message);
|
if (this->message == nullptr) {
|
||||||
this->message = (char *) malloc(n + 1);
|
this->message = (char *) malloc(n + 1);
|
||||||
|
} else if (n > this->message_length) {
|
||||||
|
this->message = (char *) realloc(this->message, n + 1);
|
||||||
|
}
|
||||||
message_length = n;
|
message_length = n;
|
||||||
strncpy(this->message, message, n+1);
|
strncpy(this->message, str, n);
|
||||||
|
this->message[n] = '\0';
|
||||||
return this->message;
|
return this->message;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -87,12 +92,12 @@ const char * HttpRequest::getMessage() const
|
||||||
|
|
||||||
HttpRequest::~HttpRequest()
|
HttpRequest::~HttpRequest()
|
||||||
{
|
{
|
||||||
if (url) {
|
if (this->url) {
|
||||||
free(url);
|
free(this->url);
|
||||||
url = nullptr;
|
this->url = nullptr;
|
||||||
}
|
}
|
||||||
if (message) {
|
if (this->message != nullptr) {
|
||||||
free(message);
|
free(this->message);
|
||||||
url = nullptr;
|
this->message = nullptr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -82,3 +82,21 @@ TEST_CASE("HttpRequest reassignment", "[HttpRequest][HttpRequest-reassign]")
|
||||||
CHECK(!req2.headers.has("Content-Type"));
|
CHECK(!req2.headers.has("Content-Type"));
|
||||||
CHECK_THAT(req2.headers.get("Accept"), Equals("*/*"));
|
CHECK_THAT(req2.headers.get("Accept"), Equals("*/*"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_CASE("Set message multiple times", "[HttpRequest]")
|
||||||
|
{
|
||||||
|
HttpRequest req;
|
||||||
|
|
||||||
|
req.setMessage("foo=bar");
|
||||||
|
CHECK_THAT(req.getMessage(), Equals("foo=bar"));
|
||||||
|
|
||||||
|
req.setMessage("foo=bar&baz");
|
||||||
|
CHECK_THAT(req.getMessage(), Equals("foo=bar&baz"));
|
||||||
|
|
||||||
|
req.setMessage("");
|
||||||
|
CHECK_THAT(req.getMessage(), Equals(""));
|
||||||
|
|
||||||
|
req.setMessage(nullptr);
|
||||||
|
bool isNull = (req.getMessage() == nullptr);
|
||||||
|
CHECK(isNull);
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue