From e678c075dda8fbff4218ceca0a2e0ffbffc10343 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= Date: Mon, 9 Jan 2017 10:41:00 +0100 Subject: [PATCH] check for is_number_unsigned before is_number_integer --- src/json.hpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index feb1aa3cb..4c6d8671a 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -493,10 +493,11 @@ template = 0> void get_arithmetic_value(Json const &j, ArithmeticType &val) { - if (j.is_number_integer()) - val = *j.template get_ptr(); - else if (j.is_number_unsigned()) + // unsigned must be checked first, since is_number_integer() == true for unsigned + if (j.is_number_unsigned()) val = *j.template get_ptr(); + else if (j.is_number_integer()) + val = *j.template get_ptr(); else if (j.is_number_float()) val = *j.template get_ptr(); else @@ -702,10 +703,10 @@ template < int> = 0> void from_json(Json const &j, ArithmeticType &val) { - if (j.is_number_integer()) - val = *j.template get_ptr(); - else if (j.is_number_unsigned()) + if (j.is_number_unsigned()) val = *j.template get_ptr(); + else if (j.is_number_integer()) + val = *j.template get_ptr(); else if (j.is_number_float()) val = *j.template get_ptr(); else if (j.is_boolean())