File tree Expand file tree Collapse file tree 1 file changed +12
-21
lines changed
Expand file tree Collapse file tree 1 file changed +12
-21
lines changed Original file line number Diff line number Diff line change @@ -1036,38 +1036,29 @@ static int smap__node_resize(smap_node_t * node, uint8_t pos)
10361036 smap_nodes_t * tmp ;
10371037 uint8_t diff = node -> offset - pos ;
10381038 uint8_t oldn = node -> sz ;
1039- node -> sz += diff ;
1040- if (node -> sz == 0 )
1039+ node -> sz += diff ; /* alway > 0 as diff > 0 */
1040+ tmp = realloc (node -> nodes , node -> sz * sizeof (smap_nodes_t ));
1041+ if (!tmp )
10411042 {
1042- free (node -> nodes );
1043- node -> nodes = NULL ;
1044- node -> offset = pos ;
1043+ node -> sz -= diff ;
1044+ rc = SMAP_ERR_ALLOC ;
10451045 }
10461046 else
10471047 {
1048- tmp = realloc (node -> nodes , node -> sz * sizeof (smap_nodes_t ));
1049- if (!tmp )
1050- {
1051- node -> sz -= diff ;
1052- rc = SMAP_ERR_ALLOC ;
1053- }
1054- else
1055- {
1056- node -> nodes = tmp ;
1057- node -> offset = pos ;
1058- memmove (node -> nodes + diff ,
1059- node -> nodes ,
1060- oldn * sizeof (smap_nodes_t ));
1061- memset (node -> nodes , 0 , diff * sizeof (smap_nodes_t ));
1062- }
1048+ node -> nodes = tmp ;
1049+ node -> offset = pos ;
1050+ memmove (node -> nodes + diff ,
1051+ node -> nodes ,
1052+ oldn * sizeof (smap_nodes_t ));
1053+ memset (node -> nodes , 0 , diff * sizeof (smap_nodes_t ));
10631054 }
10641055 }
10651056 else if (pos >= node -> offset + node -> sz )
10661057 {
10671058 smap_nodes_t * tmp ;
10681059 uint8_t diff = pos - node -> offset - node -> sz + 1 ;
10691060 uint8_t oldn = node -> sz ;
1070- node -> sz += diff ; /* assert node->sz > 0 */
1061+ node -> sz += diff ; /* alway > 0 as diff > 0 */
10711062 tmp = realloc (node -> nodes , node -> sz * sizeof (smap_nodes_t ));
10721063 if (!tmp )
10731064 {
You can’t perform that action at this time.
0 commit comments