Evas 3d: Fix some potential crashes
authorJean-Philippe Andre <jp.andre@samsung.com>
Tue, 29 Dec 2015 06:41:51 +0000 (15:41 +0900)
committerJean-Philippe Andre <jp.andre@samsung.com>
Tue, 29 Dec 2015 07:18:36 +0000 (16:18 +0900)
Those were happening before the previous patches.

src/lib/evas/canvas/evas_canvas3d_eet.c
src/modules/evas/model_loaders/eet/evas_model_load_eet.c

index aed6512..bae7856 100644 (file)
@@ -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();
index e049e2c..434852d 100644 (file)
@@ -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;
      }