retval = ext2fs_get_mem(sizeof(struct ext2_struct_dblist), &dblist);
if (retval)
- return retval;
+ goto cleanup;
memset(dblist, 0, sizeof(struct ext2_struct_dblist));
dblist->magic = EXT2_ET_MAGIC_DBLIST;
if (length > (int) sizeof(struct ext2_inode_large)) {
w_inode = malloc(length);
- if (!w_inode)
- return ENOMEM;
+ if (!w_inode) {
+ retval = ENOMEM;
+ goto errout;
+ }
} else
w_inode = &temp_inode;
memset(w_inode, 0, length);
return 0;
cleanup:
- if (io->name)
+ if (io && io->name)
ext2fs_free_mem(&io->name);
if (data)
ext2fs_free_mem(&data);
return EXT2_ET_BAD_DEVICE_NAME;
retval = ext2fs_get_mem(sizeof(struct struct_io_channel), &io);
if (retval)
- return retval;
+ goto cleanup;
memset(io, 0, sizeof(struct struct_io_channel));
io->magic = EXT2_ET_MAGIC_IO_CHANNEL;
retval = ext2fs_get_mem(sizeof(struct test_private_data), &data);
- if (retval) {
- retval = EXT2_ET_NO_MEMORY;
+ if (retval)
goto cleanup;
- }
io->manager = test_io_manager;
retval = ext2fs_get_mem(strlen(name)+1, &io->name);
if (retval)
return EXT2_ET_BAD_DEVICE_NAME;
retval = ext2fs_get_mem(sizeof(struct struct_io_channel), &io);
if (retval)
- return retval;
+ goto cleanup;
memset(io, 0, sizeof(struct struct_io_channel));
io->magic = EXT2_ET_MAGIC_IO_CHANNEL;
retval = ext2fs_get_mem(sizeof(struct undo_private_data), &data);
return 0;
cleanup:
- if (data->real)
+ if (data && data->real)
io_channel_close(data->real);
if (data)
ext2fs_free_mem(&data);
return EXT2_ET_BAD_DEVICE_NAME;
retval = ext2fs_get_mem(sizeof(struct struct_io_channel), &io);
if (retval)
- return retval;
+ goto cleanup;
memset(io, 0, sizeof(struct struct_io_channel));
io->magic = EXT2_ET_MAGIC_IO_CHANNEL;
retval = ext2fs_get_mem(sizeof(struct unix_private_data), &data);