QueryString handles null inputs

feature/UrlUtils
Kenneth Barbour 2018-11-30 19:58:57 -05:00
parent 9c2520dcf3
commit da788a4860
2 changed files with 17 additions and 3 deletions

View File

@ -7,7 +7,7 @@
*/
QueryString::QueryString(const char* query) : n(0)
{
if (query[0] == '\0') return;
if (query == nullptr || query[0] == '\0') return;
// create buffer
buffer_length = urlenc::decoded_length(query) + 2;
@ -116,6 +116,8 @@ size_t QueryString::str_count_fields(const char* query)
QueryString::~QueryString()
{
free(buffer);
free(fields);
if (n) {
free(buffer);
free(fields);
}
}

View File

@ -91,3 +91,15 @@ TEST_CASE("str_count_fields", "[QueryString][str_count_fields]")
CHECK(QueryString::str_count_fields("foo=bar&baz=qux") == 2);
CHECK(QueryString::str_count_fields("foo&bar&foo&bar") == 4);
}
TEST_CASE("empty string", "[QueryString][QueryString-empty]")
{
QueryString qs("");
CHECK(qs.count() == 0);
}
TEST_CASE("constructor with nullptr", "[QueryString-nullptr]")
{
QueryString qs(nullptr);
CHECK(qs.count() == 0);
}