From 36552ff995e402c4acff6261d42541732febf10b Mon Sep 17 00:00:00 2001 From: raysan5 Date: Mon, 3 Aug 2015 17:27:04 +0200 Subject: [PATCH] Added security check if file not found --- src/models.c | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/src/models.c b/src/models.c index 862d96cc2..81f3db689 100644 --- a/src/models.c +++ b/src/models.c @@ -558,22 +558,33 @@ void DrawGizmo(Vector3 position) Model LoadModel(const char *fileName) { VertexData vData; + + Model model; + + // TODO: Initialize default data for model in case loading fails, maybe a cube? if (strcmp(GetExtension(fileName),"obj") == 0) vData = LoadOBJ(fileName); else TraceLog(WARNING, "[%s] Model extension not recognized, it can't be loaded", fileName); // NOTE: At this point we have all vertex, texcoord, normal data for the model in vData struct - - // NOTE: model properties (transform, texture, shader) are initialized inside rlglLoadModel() - Model model = rlglLoadModel(vData); // Upload vertex data to GPU - - // Now that vertex data is uploaded to GPU, we can free arrays - // NOTE: We don't need CPU vertex data on OpenGL 3.3 or ES2 - if (rlGetVersion() != OPENGL_11) + + if (vData.vertexCount == 0) { - free(vData.vertices); - free(vData.texcoords); - free(vData.normals); + TraceLog(WARNING, "Model could not be loaded"); + } + else + { + // NOTE: model properties (transform, texture, shader) are initialized inside rlglLoadModel() + model = rlglLoadModel(vData); // Upload vertex data to GPU + + // Now that vertex data is uploaded to GPU, we can free arrays + // NOTE: We don't need CPU vertex data on OpenGL 3.3 or ES2 + if (rlGetVersion() != OPENGL_11) + { + free(vData.vertices); + free(vData.texcoords); + free(vData.normals); + } } return model;