tbm_surface_internal: check bufmgr init success before list init
[platform/core/uifw/libtbm.git] / src / tbm_surface_internal.c
index df57c42..c104298 100644 (file)
@@ -630,6 +630,11 @@ tbm_surface_internal_query_supported_formats(uint32_t **formats,
 
        if (!g_surface_bufmgr) {
                _init_surface_bufmgr();
+               if (!g_surface_bufmgr) {
+                       TBM_ERR("fail bufmgr initialization\n");
+                       _tbm_set_last_result(TBM_ERROR_INVALID_OPERATION);
+                       goto fail;
+               }
                LIST_INITHEAD(&g_surface_bufmgr->surf_list);
                bufmgr_initialized = true;
        }
@@ -770,6 +775,11 @@ tbm_surface_internal_create_with_flags(int width, int height,
 
        if (!g_surface_bufmgr) {
                _init_surface_bufmgr();
+               if (!g_surface_bufmgr) {
+                       TBM_ERR("fail bufmgr initialization\n");
+                       _tbm_set_last_result(TBM_ERROR_INVALID_OPERATION);
+                       goto check_valid_fail;
+               }
                LIST_INITHEAD(&g_surface_bufmgr->surf_list);
                bufmgr_initialized = true;
        }
@@ -777,6 +787,7 @@ tbm_surface_internal_create_with_flags(int width, int height,
        bufmgr = g_surface_bufmgr;
        if (!TBM_BUFMGR_IS_VALID(bufmgr)) {
                TBM_ERR("The bufmgr is invalid\n");
+               _tbm_set_last_result(TBM_ERROR_INVALID_PARAMETER);
                goto check_valid_fail;
        }
 
@@ -965,6 +976,11 @@ tbm_surface_internal_create_with_bos(tbm_surface_info_s *info,
 
        if (!g_surface_bufmgr) {
                _init_surface_bufmgr();
+               if (!g_surface_bufmgr) {
+                       TBM_ERR("fail bufmgr initialization\n");
+                       _tbm_set_last_result(TBM_ERROR_INVALID_OPERATION);
+                       goto check_valid_fail;
+               }
                LIST_INITHEAD(&g_surface_bufmgr->surf_list);
                bufmgr_initialized = true;
        }