eio: Fix memory leaks spotted by clang static analyzer

SVN revision: 72552
This commit is contained in:
Leandro Pereira 2012-06-20 19:34:05 +00:00
parent 74b38070b6
commit ed4fd6b877
2 changed files with 34 additions and 18 deletions

View File

@ -313,6 +313,7 @@ _eio_dir_chmod(Ecore_Thread *thread, Eio_Dir_Copy *order,
{ {
/* destroy in reverse order so that we don't prevent change of lower dir */ /* destroy in reverse order so that we don't prevent change of lower dir */
dir = eina_list_data_get(eina_list_last(order->dirs)); dir = eina_list_data_get(eina_list_last(order->dirs));
if (!dir) continue;
order->dirs = eina_list_remove_list(order->dirs, eina_list_last(order->dirs)); order->dirs = eina_list_remove_list(order->dirs, eina_list_last(order->dirs));
/* build target dir path */ /* build target dir path */

View File

@ -414,16 +414,18 @@ eio_file_direct_stat(const char *path,
s->path = eina_stringshare_add(path); s->path = eina_stringshare_add(path);
s->done_cb = done_cb; s->done_cb = done_cb;
if (!eio_file_set(&s->common, if (eio_file_set(&s->common,
NULL, NULL,
error_cb, error_cb,
data, data,
_eio_file_stat, _eio_file_stat,
_eio_file_stat_done, _eio_file_stat_done,
_eio_file_stat_error)) _eio_file_stat_error))
return NULL;
return &s->common; return &s->common;
eina_stringshare_del(path);
free(s);
return NULL;
} }
EAPI Eio_File * EAPI Eio_File *
@ -444,16 +446,18 @@ eio_file_direct_lstat(const char *path,
s->path = eina_stringshare_add(path); s->path = eina_stringshare_add(path);
s->done_cb = done_cb; s->done_cb = done_cb;
if (!eio_file_set(&s->common, if (eio_file_set(&s->common,
NULL, NULL,
error_cb, error_cb,
data, data,
_eio_file_lstat, _eio_file_lstat,
_eio_file_stat_done, _eio_file_stat_done,
_eio_file_stat_error)) _eio_file_stat_error))
return NULL;
return &s->common; return &s->common;
eina_stringshare_del(path);
free(s);
return NULL;
#else #else
return eio_file_direct_stat(path, done_cb, error_cb, data); return eio_file_direct_stat(path, done_cb, error_cb, data);
#endif #endif
@ -475,16 +479,18 @@ eio_file_unlink(const char *path,
l->path = eina_stringshare_add(path); l->path = eina_stringshare_add(path);
if (!eio_file_set(&l->common, if (eio_file_set(&l->common,
done_cb, done_cb,
error_cb, error_cb,
data, data,
_eio_file_unlink, _eio_file_unlink,
_eio_file_unlink_done, _eio_file_unlink_done,
_eio_file_unlink_error)) _eio_file_unlink_error))
return NULL;
return &l->common; return &l->common;
eina_stringshare_del(path);
free(l);
return NULL;
} }
EAPI Eio_File * EAPI Eio_File *
@ -505,16 +511,18 @@ eio_file_mkdir(const char *path,
r->path = eina_stringshare_add(path); r->path = eina_stringshare_add(path);
r->mode = mode; r->mode = mode;
if (!eio_file_set(&r->common, if (eio_file_set(&r->common,
done_cb, done_cb,
error_cb, error_cb,
data, data,
_eio_file_mkdir, _eio_file_mkdir,
_eio_file_mkdir_done, _eio_file_mkdir_done,
_eio_file_mkdir_error)) _eio_file_mkdir_error))
return NULL;
return &r->common; return &r->common;
eina_stringshare_del(path);
free(r);
return NULL;
} }
EAPI Eio_File * EAPI Eio_File *
@ -535,16 +543,18 @@ eio_file_chmod(const char *path,
r->path = eina_stringshare_add(path); r->path = eina_stringshare_add(path);
r->mode = mode; r->mode = mode;
if (!eio_file_set(&r->common, if (eio_file_set(&r->common,
done_cb, done_cb,
error_cb, error_cb,
data, data,
_eio_file_chmod, _eio_file_chmod,
_eio_file_mkdir_done, _eio_file_mkdir_done,
_eio_file_mkdir_error)) _eio_file_mkdir_error))
return NULL;
return &r->common; return &r->common;
eina_stringshare_del(path);
free(r);
return NULL;
} }
EAPI Eio_File * EAPI Eio_File *
@ -567,14 +577,19 @@ eio_file_chown(const char *path,
c->user = eina_stringshare_add(user); c->user = eina_stringshare_add(user);
c->group = eina_stringshare_add(group); c->group = eina_stringshare_add(group);
if (!eio_file_set(&c->common, if (eio_file_set(&c->common,
done_cb, done_cb,
error_cb, error_cb,
data, data,
_eio_file_chown, _eio_file_chown,
_eio_file_chown_done, _eio_file_chown_done,
_eio_file_chown_error)) _eio_file_chown_error))
return NULL;
return &c->common; return &c->common;
eina_stringshare_del(path);
eina_stringshare_del(user);
eina_stringshare_del(group);
free(c);
return NULL;
} }