diff options
Diffstat (limited to 'lib/ext2fs/dupfs.c')
-rw-r--r-- | lib/ext2fs/dupfs.c | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/lib/ext2fs/dupfs.c b/lib/ext2fs/dupfs.c index 8c6f1598..f358eca2 100644 --- a/lib/ext2fs/dupfs.c +++ b/lib/ext2fs/dupfs.c @@ -28,9 +28,10 @@ errcode_t ext2fs_dup_handle(ext2_filsys src, ext2_filsys *dest) EXT2_CHECK_MAGIC(src, EXT2_ET_MAGIC_EXT2FS_FILSYS); - fs = (ext2_filsys) malloc(sizeof(struct struct_ext2_filsys)); - if (!fs) - return EXT2_NO_MEMORY; + retval = ext2fs_get_mem(sizeof(struct struct_ext2_filsys), + (void **) &fs); + if (retval) + return retval; *fs = *src; fs->device_name = 0; @@ -45,19 +46,20 @@ errcode_t ext2fs_dup_handle(ext2_filsys src, ext2_filsys *dest) if (fs->icache) fs->icache->refcount++; - retval = EXT2_NO_MEMORY; - fs->device_name = malloc(strlen(src->device_name)+1); - if (!fs->device_name) + retval = ext2fs_get_mem(strlen(src->device_name)+1, + (void **) &fs->device_name); + if (retval) goto errout; strcpy(fs->device_name, src->device_name); - fs->super = malloc(SUPERBLOCK_SIZE); - if (!fs->super) + retval = ext2fs_get_mem(SUPERBLOCK_SIZE, (void **) &fs->super); + if (retval) goto errout; memcpy(fs->super, src->super, SUPERBLOCK_SIZE); - fs->group_desc = malloc((size_t) fs->desc_blocks * fs->blocksize); - if (!fs->group_desc) + retval = ext2fs_get_mem((size_t) fs->desc_blocks * fs->blocksize, + (void **) &fs->group_desc); + if (retval) goto errout; memcpy(fs->group_desc, src->group_desc, (size_t) fs->desc_blocks * fs->blocksize); |