reenable optimized string dup code

Former-commit-id: 5eb84db03a3035d8e96a366f3d372522424646ea
This commit is contained in:
John Sully 2019-10-21 00:08:38 -04:00
parent 9df7197221
commit e25ea03c25

View File

@ -1507,10 +1507,10 @@ sds serializeStoredStringObject(sds str, robj_roptr o)
break; //nop break; //nop
case OBJ_ENCODING_EMBSTR: case OBJ_ENCODING_EMBSTR:
size_t cch = sdslen(szFromObj(o)) + sizeof(struct sdshdr8); size_t cb = zmalloc_size(o.unsafe_robjcast());
if (cch > sizeof(redisObject::m_ptr)) if (cb > sizeof(robj))
{ {
str = sdscatlen(str, szFromObj(o) + sizeof(redisObject::m_ptr), cch - sizeof(redisObject::m_ptr)); str = sdscatlen(str, o.unsafe_robjcast() + 1, cb - sizeof(robj));
} }
break; break;
} }
@ -1528,8 +1528,7 @@ robj *deserializeStoredStringObject(const char *data, size_t cb)
serverAssert(cb == sizeof(robj)); serverAssert(cb == sizeof(robj));
[[fallthrough]]; [[fallthrough]];
case OBJ_ENCODING_EMBSTR: case OBJ_ENCODING_EMBSTR:
newObject = (robj*)zmalloc(cb+1, MALLOC_LOCAL); newObject = (robj*)zmalloc(cb, MALLOC_LOCAL);
((char*)newObject)[cb] = '\0';
memcpy(newObject, data, cb); memcpy(newObject, data, cb);
newObject->setrefcount(1); newObject->setrefcount(1);
return newObject; return newObject;
@ -1550,8 +1549,8 @@ robj *deserializeStoredObject(const void *data, size_t cb)
{ {
switch (((char*)data)[0]) switch (((char*)data)[0])
{ {
//case RDB_TYPE_STRING: case RDB_TYPE_STRING:
// return deserializeStoredStringObject(((char*)data)+1, cb-1); return deserializeStoredStringObject(((char*)data)+1, cb-1);
default: default:
rio payload; rio payload;
@ -1587,12 +1586,12 @@ sds serializeStoredObject(robj_roptr o)
{ {
switch (o->type) switch (o->type)
{ {
//case OBJ_STRING: case OBJ_STRING:
//{ {
// sds sdsT = sdsnewlen(nullptr, 1); sds sdsT = sdsnewlen(nullptr, 1);
// sdsT[0] = RDB_TYPE_STRING; sdsT[0] = RDB_TYPE_STRING;
// return serializeStoredStringObject(sdsT, o); return serializeStoredStringObject(sdsT, o);
//} }
default: default:
rio rdb; rio rdb;