From 1bab4cd198ed306afd7ed2e5617ba649dff37977 Mon Sep 17 00:00:00 2001 From: DarrenJiang13 Date: Wed, 19 May 2021 14:24:26 +0800 Subject: [PATCH] try a more concise rdbTryIntegerEncoding using string2ll rather than strtoll. (#8926) when string2ll was made to replace isStringRepresentableAsLongLong (which was similar to what rdbTryIntegerEncoding does), rdbTryIntegerEncoding was probably forgotten. --- src/rdb.c | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/src/rdb.c b/src/rdb.c index df3aa9b94f..a28705e7b9 100644 --- a/src/rdb.c +++ b/src/rdb.c @@ -318,18 +318,11 @@ void *rdbLoadIntegerObject(rio *rdb, int enctype, int flags, size_t *lenptr) { * encoded as integers to save space */ int rdbTryIntegerEncoding(char *s, size_t len, unsigned char *enc) { long long value; - char *endptr, buf[32]; - - /* Check if it's possible to encode this value as a number */ - value = strtoll(s, &endptr, 10); - if (endptr[0] != '\0') return 0; - ll2string(buf,32,value); - - /* If the number converted back into a string is not identical - * then it's not possible to encode the string as integer */ - if (strlen(buf) != len || memcmp(buf,s,len)) return 0; - - return rdbEncodeInteger(value,enc); + if (string2ll(s, len, &value)) { + return rdbEncodeInteger(value, enc); + } else { + return 0; + } } ssize_t rdbSaveLzfBlob(rio *rdb, void *data, size_t compress_len,