From b13502f20af7ae4fc5c10cb024c7274e2c86d66c Mon Sep 17 00:00:00 2001 From: Jean-Philippe Andre Date: Tue, 29 Dec 2015 15:41:51 +0900 Subject: [PATCH] Evas 3d: Fix some potential crashes Those were happening before the previous patches. --- src/lib/evas/canvas/evas_canvas3d_eet.c | 35 ++++++++++--------- .../model_loaders/eet/evas_model_load_eet.c | 4 +-- 2 files changed, 21 insertions(+), 18 deletions(-) diff --git a/src/lib/evas/canvas/evas_canvas3d_eet.c b/src/lib/evas/canvas/evas_canvas3d_eet.c index aed6512cb2..bae7856f8c 100644 --- a/src/lib/evas/canvas/evas_canvas3d_eet.c +++ b/src/lib/evas/canvas/evas_canvas3d_eet.c @@ -189,25 +189,28 @@ _evas_canvas3d_eet_descriptor_shutdown() void _evas_canvas3d_eet_file_free(Evas_Canvas3D_File_Eet* eet_file) { - if (eet_file->mesh) + if (eet_file) { - free(eet_file->mesh->geometries[0].vertices); - free(eet_file->mesh->geometries); - free(eet_file->mesh->frames); - free(eet_file->mesh->materials[0].colors); - free(eet_file->mesh->materials); - free(eet_file->mesh); + if (eet_file->mesh) + { + free(eet_file->mesh->geometries[0].vertices); + free(eet_file->mesh->geometries); + free(eet_file->mesh->frames); + free(eet_file->mesh->materials[0].colors); + free(eet_file->mesh->materials); + free(eet_file->mesh); + } + + if (eet_file->header) + { + free(eet_file->header->materials); + free(eet_file->header->geometries); + free(eet_file->header); + } + + free(eet_file); } - if (eet_file->header) - { - free(eet_file->header->materials); - free(eet_file->header->geometries); - free(eet_file->header); - } - - free(eet_file); - eet_file = NULL; _evas_canvas3d_eet_descriptor_shutdown(); eet_shutdown(); eina_shutdown(); diff --git a/src/modules/evas/model_loaders/eet/evas_model_load_eet.c b/src/modules/evas/model_loaders/eet/evas_model_load_eet.c index e049e2c0a7..434852dadb 100644 --- a/src/modules/evas/model_loaders/eet/evas_model_load_eet.c +++ b/src/modules/evas/model_loaders/eet/evas_model_load_eet.c @@ -115,9 +115,9 @@ evas_model_load_file_eet(Evas_Canvas3D_Mesh *mesh, Eina_File *file) eet_close(ef); - if ((eet_file->mesh == NULL) || (eet_file->header == NULL)) + if (!eet_file || !eet_file->mesh || !eet_file->header) { - ERR("Reading of file is failed."); + ERR("Failed to read model file"); _evas_canvas3d_eet_file_free(eet_file); return; }