diff options
Diffstat (limited to 'lib/ext2fs/badblocks.c')
-rw-r--r-- | lib/ext2fs/badblocks.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/lib/ext2fs/badblocks.c b/lib/ext2fs/badblocks.c index 9d43444a..3851ccd6 100644 --- a/lib/ext2fs/badblocks.c +++ b/lib/ext2fs/badblocks.c @@ -101,15 +101,19 @@ errcode_t ext2fs_badblocks_list_add(ext2_badblocks_list bb, blk_t blk) { errcode_t retval; int i, j; + unsigned long old_size; EXT2_CHECK_MAGIC(bb, EXT2_ET_MAGIC_BADBLOCKS_LIST); if (bb->num >= bb->size) { + old_size = bb->size * sizeof(blk_t); bb->size += 10; - retval = ext2fs_resize_mem(bb->size * sizeof(blk_t), + retval = ext2fs_resize_mem(old_size, bb->size * sizeof(blk_t), (void **) &bb->list); - if (retval) + if (retval) { + bb->size -= 10; return retval; + } } j = bb->num; |