#ifdef HAVE_DIRENT_H
Eina_File_Iterator *it;
size_t length;
+ DIR *dirp;
EINA_SAFETY_ON_NULL_RETURN_VAL(dir, NULL);
if (length < 1)
return NULL;
- it = calloc(1, sizeof (Eina_File_Iterator) + length);
- if (!it)
+ dirp = opendir(dir);
+ if (!dirp)
return NULL;
- EINA_MAGIC_SET(&it->iterator, EINA_MAGIC_ITERATOR);
-
- it->dirp = opendir(dir);
- if (!it->dirp)
+ it = calloc(1, sizeof (Eina_File_Iterator) + length);
+ if (EINA_UNLIKELY(!it))
{
- free(it);
+ closedir(dirp);
return NULL;
}
+ EINA_MAGIC_SET(&it->iterator, EINA_MAGIC_ITERATOR);
+
+ it->dirp = dirp;
+
memcpy(it->dir, dir, length + 1);
if (dir[length - 1] != '/')
it->length = length;
#ifdef HAVE_DIRENT_H
Eina_File_Direct_Iterator *it;
size_t length;
+ DIR *dirp;
EINA_SAFETY_ON_NULL_RETURN_VAL(dir, NULL);
if (length < 1)
return NULL;
- it = calloc(1, sizeof(Eina_File_Direct_Iterator) + length);
- if (!it)
+ dirp = opendir(dir);
+ if (!dirp)
return NULL;
- EINA_MAGIC_SET(&it->iterator, EINA_MAGIC_ITERATOR);
-
- it->dirp = opendir(dir);
- if (!it->dirp)
+ it = calloc(1, sizeof(Eina_File_Direct_Iterator) + length);
+ if (EINA_UNLIKELY(!it))
{
- free(it);
+ closedir(dirp);
return NULL;
}
+ EINA_MAGIC_SET(&it->iterator, EINA_MAGIC_ITERATOR);
+
+ it->dirp = dirp;
+
if (length + _eina_name_max(it->dirp) + 2 >= EINA_PATH_MAX)
{
_eina_file_direct_ls_iterator_free(it);
return NULL;
it = calloc(1, sizeof(Eina_File_Direct_Iterator) + length);
- if (!it)
+ if (EINA_UNLIKELY(!it))
{
closedir(dirp);
return NULL;