Whamcloud - gitweb
Merge branch 'maint'
[tools/e2fsprogs.git] / lib / ext2fs / openfs.c
index 0c38b17..a6a8217 100644 (file)
@@ -280,7 +280,7 @@ errcode_t ext2fs_open2(const char *name, const char *io_options,
                                               blocks_per_group);
        fs->desc_blocks = ext2fs_div_ceil(fs->group_desc_count,
                                          EXT2_DESC_PER_BLOCK(fs->super));
-       retval = ext2fs_get_mem(fs->desc_blocks * fs->blocksize,
+       retval = ext2fs_get_array(fs->desc_blocks, fs->blocksize,
                                &fs->group_desc);
        if (retval)
                goto cleanup;
@@ -303,10 +303,14 @@ errcode_t ext2fs_open2(const char *name, const char *io_options,
 
        fs->stride = fs->super->s_raid_stride;
 
+       fs->flags &= ~EXT2_FLAG_NOFREE_ON_ERROR;
        *ret_fs = fs;
        return 0;
 cleanup:
-       ext2fs_free(fs);
+       if (flags & EXT2_FLAG_NOFREE_ON_ERROR)
+               *ret_fs = fs;
+       else
+               ext2fs_free(fs);
        return retval;
 }