diff --git a/Source/core/Optional.h b/Source/core/Optional.h index 3fd069040..451597e69 100644 --- a/Source/core/Optional.h +++ b/Source/core/Optional.h @@ -93,6 +93,7 @@ namespace Core { inline void Clear() { m_Set = false; + m_Value = TYPE{}; } operator TYPE&() diff --git a/Source/websocket/WebSerializer.cpp b/Source/websocket/WebSerializer.cpp index 9bd2d2b9e..f159719ff 100644 --- a/Source/websocket/WebSerializer.cpp +++ b/Source/websocket/WebSerializer.cpp @@ -1349,12 +1349,16 @@ namespace Web if ((query == string::npos) && (fragment == string::npos)) { _current->Path = buffer; + _current->Query.Clear(); + _current->Fragment.Clear(); } else if (fragment == string::npos) { _current->Path = buffer.substr(0, query); _current->Query = buffer.substr(query + 1, buffer.size() - query); + _current->Fragment.Clear(); } else if (query == string::npos) { _current->Path = buffer.substr(0, fragment); _current->Fragment = buffer.substr(fragment + 1, buffer.size() - fragment); + _current->Query.Clear(); } else if (query < fragment) { _current->Path = buffer.substr(0, query); _current->Query = buffer.substr(query + 1, buffer.size() - query);