Efl_Ui_Caching_Factory_Data *pd,
Eina_Iterator *models, Efl_Gfx_Entity *parent)
{
+ Efl_Ui_Caching_Factory_Request *r;
Efl_Ui_Caching_Factory_Group_Request *gr;
Efl_Gfx_Entity *w = NULL;
Efl_Model *model;
if (pd->cache && pd->style && !pd->klass)
{
- Efl_Ui_Caching_Factory_Request *r;
Eina_Future **all;
int count = 0;
r->factory = efl_ref(obj);
all = calloc(1, sizeof (Eina_Future *));
- if (!all)
- {
- free(r);
- return efl_loop_future_rejected(obj, ENOMEM);
- }
+ if (!all) goto alloc_array_error;
EINA_ITERATOR_FOREACH(models, model)
{
.data = r);
all = realloc(all, (count + 1) * sizeof (Eina_Future *));
- if (!all)
- {
- free(r);
- return efl_loop_future_rejected(obj, ENOMEM);
- }
+ if (!all) goto alloc_array_error;
}
eina_iterator_free(models);
.success_type = EINA_VALUE_TYPE_ARRAY,
.data = gr,
.free = _efl_ui_caching_factory_group_cleanup);
+
+alloc_array_error:
+ efl_unref(r->parent);
+ efl_unref(r->factory);
+ free(r);
+ eina_iterator_free(models);
+ return efl_loop_future_rejected(obj, ENOMEM);
}
static void
r->factory = efl_ref(obj);
f = calloc(count + 1, sizeof (Eina_Future *));
- if (!f)
- {
- free(r);
- return efl_loop_future_rejected(obj, ENOMEM);
- }
+ if (!f) goto alloc_array_error;
EINA_ITERATOR_FOREACH(models, model)
{
.free = _efl_ui_widget_factory_single_cleanup);
f = realloc(f, (count + 1) * sizeof (Eina_Future *));
- if (!f)
- {
- free(r);
- return efl_loop_future_rejected(obj, ENOMEM);
- }
+ if (!f) goto alloc_array_error;
}
eina_iterator_free(models);
return efl_future_then(obj, eina_future_all_array(f),
.data = r,
.free = _efl_ui_widget_factory_create_cleanup);
+
+alloc_array_error:
+ efl_unref(r->parent);
+ efl_unref(r->factory);
+ free(r);
+ eina_iterator_free(models);
+ return efl_loop_future_rejected(obj, ENOMEM);
}
static void