From 23e276376ade7f42f6d0a2c68db2b4f31bd080b0 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 4 Dec 2015 10:35:33 +0100 Subject: [PATCH] Backports/rewrites wmarquesr pt. 2 --- libretro-db/query.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/libretro-db/query.c b/libretro-db/query.c index 8a9b0addc0..0c3f851356 100644 --- a/libretro-db/query.c +++ b/libretro-db/query.c @@ -581,23 +581,28 @@ static struct buffer parse_string(struct buffer buff, static struct buffer parse_integer(struct buffer buff, struct rmsgpack_dom_value *value, const char **error) { + bool test = false; + value->type = RDT_INT; #ifdef _WIN32 - if (sscanf(buff.data + buff.offset, + test = (sscanf(buff.data + buff.offset, "%I64d", - (signed long long*)&value->val.int_) == 0) + (signed long long*)&value->val.int_) == 0); #else - if (sscanf(buff.data + buff.offset, + test = (sscanf(buff.data + buff.offset, "%lld", - (signed long long*)&value->val.int_) == 0) + (signed long long*)&value->val.int_) == 0); #endif + + if (test) raise_expected_number(buff.offset, error); else { while (isdigit((int)buff.data[buff.offset])) buff.offset++; } + return buff; }