🚧 add fix from #1715
This commit is contained in:
parent
a82c80e9af
commit
225fa58f16
3 changed files with 28 additions and 4 deletions
|
@ -331,13 +331,14 @@ inline input_stream_adapter input_adapter(std::istream&& stream)
|
||||||
return input_stream_adapter(stream);
|
return input_stream_adapter(stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename CharT,
|
template<typename CharT, typename SizeT,
|
||||||
typename std::enable_if<
|
typename std::enable_if<
|
||||||
std::is_pointer<CharT>::value and
|
std::is_pointer<CharT>::value and
|
||||||
std::is_integral<typename std::remove_pointer<CharT>::type>::value and
|
std::is_integral<typename std::remove_pointer<CharT>::type>::value and
|
||||||
|
not std::is_same<SizeT, bool>::value and
|
||||||
sizeof(typename std::remove_pointer<CharT>::type) == 1,
|
sizeof(typename std::remove_pointer<CharT>::type) == 1,
|
||||||
int>::type = 0>
|
int>::type = 0>
|
||||||
input_buffer_adapter input_adapter(CharT b, std::size_t l)
|
input_buffer_adapter input_adapter(CharT b, SizeT l)
|
||||||
{
|
{
|
||||||
return input_buffer_adapter(reinterpret_cast<const char*>(b), l);
|
return input_buffer_adapter(reinterpret_cast<const char*>(b), l);
|
||||||
}
|
}
|
||||||
|
|
|
@ -4754,13 +4754,14 @@ inline input_stream_adapter input_adapter(std::istream&& stream)
|
||||||
return input_stream_adapter(stream);
|
return input_stream_adapter(stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename CharT,
|
template<typename CharT, typename SizeT,
|
||||||
typename std::enable_if<
|
typename std::enable_if<
|
||||||
std::is_pointer<CharT>::value and
|
std::is_pointer<CharT>::value and
|
||||||
std::is_integral<typename std::remove_pointer<CharT>::type>::value and
|
std::is_integral<typename std::remove_pointer<CharT>::type>::value and
|
||||||
|
not std::is_same<SizeT, bool>::value and
|
||||||
sizeof(typename std::remove_pointer<CharT>::type) == 1,
|
sizeof(typename std::remove_pointer<CharT>::type) == 1,
|
||||||
int>::type = 0>
|
int>::type = 0>
|
||||||
input_buffer_adapter input_adapter(CharT b, std::size_t l)
|
input_buffer_adapter input_adapter(CharT b, SizeT l)
|
||||||
{
|
{
|
||||||
return input_buffer_adapter(reinterpret_cast<const char*>(b), l);
|
return input_buffer_adapter(reinterpret_cast<const char*>(b), l);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1890,6 +1890,28 @@ TEST_CASE("regression tests")
|
||||||
json j = val;
|
json j = val;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SECTION("issue #1715 - json::from_cbor does not respect allow_exceptions = false when input is string literal")
|
||||||
|
{
|
||||||
|
SECTION("string literal")
|
||||||
|
{
|
||||||
|
json cbor = json::from_cbor("B", true, false);
|
||||||
|
CHECK(cbor.is_discarded());
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("string array")
|
||||||
|
{
|
||||||
|
const char input[] = { 'B', 0x00 };
|
||||||
|
json cbor = json::from_cbor(input, true, false);
|
||||||
|
CHECK(cbor.is_discarded());
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("std::string")
|
||||||
|
{
|
||||||
|
json cbor = json::from_cbor(std::string("B"), true, false);
|
||||||
|
CHECK(cbor.is_discarded());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
SECTION("issue #1805 - A pair<T1, T2> is json constructible only if T1 and T2 are json constructible")
|
SECTION("issue #1805 - A pair<T1, T2> is json constructible only if T1 and T2 are json constructible")
|
||||||
{
|
{
|
||||||
static_assert(!std::is_constructible<json, std::pair<std::string, NotSerializableData>>::value, "");
|
static_assert(!std::is_constructible<json, std::pair<std::string, NotSerializableData>>::value, "");
|
||||||
|
|
Loading…
Reference in a new issue