summaryrefslogtreecommitdiff
path: root/include/convto.h
diff options
context:
space:
mode:
authorMatt Schatz <genius3000@g3k.solutions>2020-03-24 11:50:14 -0600
committerSadie Powell <sadie@witchery.services>2020-03-24 18:26:59 +0000
commit998b407b2ab95c44c45761c8b2768c274ca6515f (patch)
tree1b68608b5ec50572e32585cccab89b9d28d0a3c5 /include/convto.h
parent7a9e579b49483d1d073b6fed3e2e8ef99d956bc7 (diff)
Fix the signed-ness within ConvToNum char overloads.
It should be signed int with signed char and vice-versa. Currently, anything over 127 as unsigned char would return 0.
Diffstat (limited to 'include/convto.h')
-rw-r--r--include/convto.h8
1 files changed, 4 insertions, 4 deletions
diff --git a/include/convto.h b/include/convto.h
index 9ace83261..1fc684829 100644
--- a/include/convto.h
+++ b/include/convto.h
@@ -104,14 +104,14 @@ template<> inline char ConvToNum<char>(const std::string& in)
{
// We specialise ConvToNum for char to avoid istringstream treating
// the input as a character literal.
- uint16_t num = ConvToNum<uint16_t>(in);
- return num <= UINT8_MAX ? num : 0;
+ int16_t num = ConvToNum<int16_t>(in);
+ return num >= INT8_MIN && num <= INT8_MAX ? num : 0;
}
template<> inline unsigned char ConvToNum<unsigned char>(const std::string& in)
{
// We specialise ConvToNum for unsigned char to avoid istringstream
// treating the input as a character literal.
- int16_t num = ConvToNum<int16_t>(in);
- return num >= INT8_MIN && num <= INT8_MAX ? num : 0;
+ uint16_t num = ConvToNum<uint16_t>(in);
+ return num <= UINT8_MAX ? num : 0;
}