forked from enlightenment/efl
eio: Call correct function to cleanup Eio_File.
The Eio functions operating on Eina_Files were just freeing the Eio_File pointer on completion instead of calling eio_file_free to unregister the thread.
This commit is contained in:
parent
636c8b48c7
commit
0eacdc03da
|
@ -44,7 +44,7 @@ static void
|
|||
_eio_file_open_free(Eio_File_Map *map)
|
||||
{
|
||||
if (map->name) eina_stringshare_del(map->name);
|
||||
free(map);
|
||||
eio_file_free((Eio_File*)map);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -144,7 +144,7 @@ _eio_file_map_end(void *data, Ecore_Thread *thread EINA_UNUSED)
|
|||
Eio_File_Map_Rule *map = data;
|
||||
|
||||
map->map_cb((void*) map->common.data, &map->common, map->result, map->length);
|
||||
free(map);
|
||||
eio_file_free((Eio_File*)map);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -153,7 +153,7 @@ _eio_file_map_cancel(void *data, Ecore_Thread *thread EINA_UNUSED)
|
|||
Eio_File_Map_Rule *map = data;
|
||||
|
||||
eio_file_error(&map->common);
|
||||
free(map);
|
||||
eio_file_free((Eio_File*)map);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -118,6 +118,15 @@ _error_cb(void *data EINA_UNUSED, Eio_File *handler EINA_UNUSED, int error)
|
|||
ecore_main_loop_quit();
|
||||
}
|
||||
|
||||
static void
|
||||
_open_done_cb(void *data, Eio_File *handler EINA_UNUSED, Eina_File *file)
|
||||
{
|
||||
Eina_Bool *opened = (Eina_Bool *)data;
|
||||
*opened = EINA_TRUE;
|
||||
eina_file_close(file);
|
||||
ecore_main_loop_quit();
|
||||
}
|
||||
|
||||
Eina_Tmpstr*
|
||||
get_full_path(const char* tmpdirname, const char* filename)
|
||||
{
|
||||
|
@ -368,9 +377,47 @@ START_TEST(eio_file_test_file)
|
|||
}
|
||||
END_TEST
|
||||
|
||||
START_TEST(eio_file_test_open)
|
||||
{
|
||||
Eina_Bool opened_file;
|
||||
int ret;
|
||||
|
||||
ret = ecore_init();
|
||||
fail_if(ret < 1);
|
||||
ret = eio_init();
|
||||
fail_if(ret < 1);
|
||||
ret = eina_init();
|
||||
fail_if(ret < 1);
|
||||
ret = ecore_file_init();
|
||||
fail_if(ret < 1);
|
||||
|
||||
|
||||
Eina_Tmpstr *test_dirname = get_eio_test_file_tmp_dir();
|
||||
Eina_Tmpstr *nested_dirname = create_test_dirs(test_dirname);
|
||||
Eina_Tmpstr *nested_filename = get_full_path(test_dirname, files[3]);
|
||||
|
||||
opened_file = EINA_FALSE;
|
||||
eio_file_open(nested_filename, EINA_FALSE, _open_done_cb, _error_cb, &opened_file);
|
||||
ecore_main_loop_begin();
|
||||
fail_if(!opened_file);
|
||||
|
||||
// Cleanup
|
||||
fail_if(!ecore_file_recursive_rm(test_dirname));
|
||||
|
||||
eina_tmpstr_del(nested_dirname);
|
||||
eina_tmpstr_del(test_dirname);
|
||||
eina_tmpstr_del(nested_filename);
|
||||
ecore_file_shutdown();
|
||||
eina_shutdown();
|
||||
eio_shutdown();
|
||||
ecore_shutdown();
|
||||
}
|
||||
END_TEST
|
||||
|
||||
void
|
||||
eio_test_file(TCase *tc)
|
||||
{
|
||||
tcase_add_test(tc, eio_file_test_ls);
|
||||
tcase_add_test(tc, eio_file_test_file);
|
||||
tcase_add_test(tc, eio_file_test_open);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue