A string with 21 chars is not representable as a 64-bit integer.

This commit is contained in:
tielei 2016-06-23 19:53:56 +08:00
parent 3d48c93122
commit f648c5a70c

View File

@ -385,10 +385,10 @@ robj *tryObjectEncoding(robj *o) {
if (o->refcount > 1) return o; if (o->refcount > 1) return o;
/* Check if we can represent this string as a long integer. /* Check if we can represent this string as a long integer.
* Note that we are sure that a string larger than 21 chars is not * Note that we are sure that a string larger than 20 chars is not
* representable as a 32 nor 64 bit integer. */ * representable as a 32 nor 64 bit integer. */
len = sdslen(s); len = sdslen(s);
if (len <= 21 && string2l(s,len,&value)) { if (len <= 20 && string2l(s,len,&value)) {
/* This object is encodable as a long. Try to use a shared object. /* This object is encodable as a long. Try to use a shared object.
* Note that we avoid using shared integers when maxmemory is used * Note that we avoid using shared integers when maxmemory is used
* because every object needs to have a private LRU field for the LRU * because every object needs to have a private LRU field for the LRU