@@ -1441,7 +1441,10 @@ robj *rdbLoadObject(int rdbtype, rio *rdb, sds key) {
1441
1441
1442
1442
/* Load every single element of the list */
1443
1443
while (len -- ) {
1444
- if ((ele = rdbLoadEncodedStringObject (rdb )) == NULL ) return NULL ;
1444
+ if ((ele = rdbLoadEncodedStringObject (rdb )) == NULL ) {
1445
+ decrRefCount (o );
1446
+ return NULL ;
1447
+ }
1445
1448
dec = getDecodedObject (ele );
1446
1449
size_t len = sdslen (dec -> ptr );
1447
1450
quicklistPushTail (o -> ptr , dec -> ptr , len );
@@ -1468,8 +1471,10 @@ robj *rdbLoadObject(int rdbtype, rio *rdb, sds key) {
1468
1471
long long llval ;
1469
1472
sds sdsele ;
1470
1473
1471
- if ((sdsele = rdbGenericLoadStringObject (rdb ,RDB_LOAD_SDS ,NULL ))
1472
- == NULL ) return NULL ;
1474
+ if ((sdsele = rdbGenericLoadStringObject (rdb ,RDB_LOAD_SDS ,NULL )) == NULL ) {
1475
+ decrRefCount (o );
1476
+ return NULL ;
1477
+ }
1473
1478
1474
1479
if (o -> encoding == OBJ_ENCODING_INTSET ) {
1475
1480
/* Fetch integer value from element. */
@@ -1508,13 +1513,23 @@ robj *rdbLoadObject(int rdbtype, rio *rdb, sds key) {
1508
1513
double score ;
1509
1514
zskiplistNode * znode ;
1510
1515
1511
- if ((sdsele = rdbGenericLoadStringObject (rdb ,RDB_LOAD_SDS ,NULL ))
1512
- == NULL ) return NULL ;
1516
+ if ((sdsele = rdbGenericLoadStringObject (rdb ,RDB_LOAD_SDS ,NULL )) == NULL ) {
1517
+ decrRefCount (o );
1518
+ return NULL ;
1519
+ }
1513
1520
1514
1521
if (rdbtype == RDB_TYPE_ZSET_2 ) {
1515
- if (rdbLoadBinaryDoubleValue (rdb ,& score ) == -1 ) return NULL ;
1522
+ if (rdbLoadBinaryDoubleValue (rdb ,& score ) == -1 ) {
1523
+ decrRefCount (o );
1524
+ sdsfree (sdsele );
1525
+ return NULL ;
1526
+ }
1516
1527
} else {
1517
- if (rdbLoadDoubleValue (rdb ,& score ) == -1 ) return NULL ;
1528
+ if (rdbLoadDoubleValue (rdb ,& score ) == -1 ) {
1529
+ decrRefCount (o );
1530
+ sdsfree (sdsele );
1531
+ return NULL ;
1532
+ }
1518
1533
}
1519
1534
1520
1535
/* Don't care about integer-encoded strings. */
@@ -1546,10 +1561,15 @@ robj *rdbLoadObject(int rdbtype, rio *rdb, sds key) {
1546
1561
while (o -> encoding == OBJ_ENCODING_ZIPLIST && len > 0 ) {
1547
1562
len -- ;
1548
1563
/* Load raw strings */
1549
- if ((field = rdbGenericLoadStringObject (rdb ,RDB_LOAD_SDS ,NULL ))
1550
- == NULL ) return NULL ;
1551
- if ((value = rdbGenericLoadStringObject (rdb ,RDB_LOAD_SDS ,NULL ))
1552
- == NULL ) return NULL ;
1564
+ if ((field = rdbGenericLoadStringObject (rdb ,RDB_LOAD_SDS ,NULL )) == NULL ) {
1565
+ decrRefCount (o );
1566
+ return NULL ;
1567
+ }
1568
+ if ((value = rdbGenericLoadStringObject (rdb ,RDB_LOAD_SDS ,NULL )) == NULL ) {
1569
+ sdsfree (field );
1570
+ decrRefCount (o );
1571
+ return NULL ;
1572
+ }
1553
1573
1554
1574
/* Add pair to ziplist */
1555
1575
o -> ptr = ziplistPush (o -> ptr , (unsigned char * )field ,
@@ -1577,10 +1597,15 @@ robj *rdbLoadObject(int rdbtype, rio *rdb, sds key) {
1577
1597
while (o -> encoding == OBJ_ENCODING_HT && len > 0 ) {
1578
1598
len -- ;
1579
1599
/* Load encoded strings */
1580
- if ((field = rdbGenericLoadStringObject (rdb ,RDB_LOAD_SDS ,NULL ))
1581
- == NULL ) return NULL ;
1582
- if ((value = rdbGenericLoadStringObject (rdb ,RDB_LOAD_SDS ,NULL ))
1583
- == NULL ) return NULL ;
1600
+ if ((field = rdbGenericLoadStringObject (rdb ,RDB_LOAD_SDS ,NULL )) == NULL ) {
1601
+ decrRefCount (o );
1602
+ return NULL ;
1603
+ }
1604
+ if ((value = rdbGenericLoadStringObject (rdb ,RDB_LOAD_SDS ,NULL )) == NULL ) {
1605
+ sdsfree (field );
1606
+ decrRefCount (o );
1607
+ return NULL ;
1608
+ }
1584
1609
1585
1610
/* Add pair to hash table */
1586
1611
ret = dictAdd ((dict * )o -> ptr , field , value );
@@ -1600,7 +1625,10 @@ robj *rdbLoadObject(int rdbtype, rio *rdb, sds key) {
1600
1625
while (len -- ) {
1601
1626
unsigned char * zl =
1602
1627
rdbGenericLoadStringObject (rdb ,RDB_LOAD_PLAIN ,NULL );
1603
- if (zl == NULL ) return NULL ;
1628
+ if (zl == NULL ) {
1629
+ decrRefCount (o );
1630
+ return NULL ;
1631
+ }
1604
1632
quicklistAppendZiplist (o -> ptr , zl );
1605
1633
}
1606
1634
} else if (rdbtype == RDB_TYPE_HASH_ZIPMAP ||
0 commit comments