🔨 fixed some warnings

This commit is contained in:
Niels Lohmann 2017-07-22 15:33:31 +02:00
parent c7a69ae03e
commit d53ef95067
No known key found for this signature in database
GPG key ID: 7F3CEA63AE251B69
2 changed files with 11 additions and 12 deletions

View file

@ -6644,7 +6644,7 @@ class serializer
{ {
if (ensure_ascii and (s[i] & 0x80 or s[i] == 0x7F)) if (ensure_ascii and (s[i] & 0x80 or s[i] == 0x7F))
{ {
const auto bytes = bytes_following(s[i] & 0xFF); const auto bytes = bytes_following(static_cast<uint8_t>(s[i]));
if (bytes == std::string::npos) if (bytes == std::string::npos)
{ {
// invalid characters are treated as is, so no // invalid characters are treated as is, so no
@ -6821,7 +6821,7 @@ class serializer
if ((0x00 <= s[i] and s[i] <= 0x1F) or if ((0x00 <= s[i] and s[i] <= 0x1F) or
(ensure_ascii and (s[i] & 0x80 or s[i] == 0x7F))) (ensure_ascii and (s[i] & 0x80 or s[i] == 0x7F)))
{ {
const auto bytes = bytes_following(s[i] & 0xFF); const auto bytes = bytes_following(static_cast<uint8_t>(s[i]));
if (bytes == std::string::npos) if (bytes == std::string::npos)
{ {
// copy invalid character as is // copy invalid character as is

View file

@ -32,6 +32,15 @@ SOFTWARE.
#include "json.hpp" #include "json.hpp"
using nlohmann::json; using nlohmann::json;
void check_escaped(const char* original, const char* escaped, const bool ensure_ascii = false);
void check_escaped(const char* original, const char* escaped, const bool ensure_ascii)
{
std::stringstream ss;
json::serializer s(nlohmann::detail::output_adapter_factory<char>::create(ss), ' ');
s.dump_escaped(original, ensure_ascii);
CHECK(ss.str() == escaped);
}
TEST_CASE("convenience functions") TEST_CASE("convenience functions")
{ {
SECTION("type name as string") SECTION("type name as string")
@ -49,16 +58,6 @@ TEST_CASE("convenience functions")
SECTION("string escape") SECTION("string escape")
{ {
const auto check_escaped = [](const char* original,
const char* escaped,
const bool ensure_ascii = false)
{
std::stringstream ss;
json::serializer s(nlohmann::detail::output_adapter_factory<char>::create(ss), ' ');
s.dump_escaped(original, ensure_ascii);
CHECK(ss.str() == escaped);
};
check_escaped("\"", "\\\""); check_escaped("\"", "\\\"");
check_escaped("\\", "\\\\"); check_escaped("\\", "\\\\");
check_escaped("\b", "\\b"); check_escaped("\b", "\\b");