From 8dccb82a3c65b8af3ac132cf1d392a6dc92831c4 Mon Sep 17 00:00:00 2001 From: JAJames Date: Sat, 30 Jan 2016 07:26:46 -0500 Subject: [PATCH] Minor bug fix in HTTP::QueryString --- Jupiter/HTTP_QueryString.h | 16 ++++++++++------ Release/Jupiter.lib | Bin 300418 -> 300418 bytes 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/Jupiter/HTTP_QueryString.h b/Jupiter/HTTP_QueryString.h index 8a94686..4756cb1 100644 --- a/Jupiter/HTTP_QueryString.h +++ b/Jupiter/HTTP_QueryString.h @@ -52,7 +52,7 @@ namespace Jupiter HTMLFormResponse() = delete; inline HTMLFormResponse(const Jupiter::ReadableString &query_string) : HTMLFormResponse(query_string.ptr(), query_string.size()) {} inline HTMLFormResponse(const char *ptr, size_t str_size); - Jupiter::INIFile table; + Jupiter::INIFile::Section table; }; } } @@ -132,9 +132,9 @@ inline Jupiter::HTTP::HTMLFormResponse::HTMLFormResponse(const char *ptr, size_t } } - const char *token_start = ptr; const char *end = ptr + str_size - 2; char *buf = str; + const char *token_start = buf; int val; Jupiter::ReferenceString key; @@ -164,17 +164,17 @@ inline Jupiter::HTTP::HTMLFormResponse::HTMLFormResponse(const char *ptr, size_t else if (*ptr == '&') // End of key/value, start of key { if (key.isNotEmpty()) // A key was already set; end of value - Jupiter::HTTP::HTMLFormResponse::table.set(Jupiter::ReferenceString::empty, key, Jupiter::ReferenceString(token_start, ptr - token_start)); + Jupiter::HTTP::HTMLFormResponse::table.set(key, Jupiter::ReferenceString(token_start, buf - token_start)); key.erase(); ++buf, ++ptr; - token_start = ptr; + token_start = buf; } else if (*ptr == '=') // End of key, start of value { - key.set(token_start, ptr - token_start); + key.set(token_start, buf - token_start); ++buf, ++ptr; - token_start = ptr; + token_start = buf; } else // Copy character { @@ -186,6 +186,10 @@ inline Jupiter::HTTP::HTMLFormResponse::HTMLFormResponse(const char *ptr, size_t // copy last 2 characters *buf = *ptr; *++buf = *++ptr; + + if (key.isNotEmpty()) // A key was already set; end of value + Jupiter::HTTP::HTMLFormResponse::table.set(key, Jupiter::ReferenceString(token_start, buf - token_start + 1)); + Jupiter::StringType::length = buf + 1 - str; } diff --git a/Release/Jupiter.lib b/Release/Jupiter.lib index e8099df6fa22141b2fe8fe7f5c55e38ee87947b9..418c7b7faa1ce016fe1a2abe1789298ffbf9bb01 100644 GIT binary patch delta 20143 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 delta 20143 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