From 42c560b05d1697e1266c7932d52beee625db8591 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sat, 10 Aug 2013 10:49:26 -0700 Subject: [PATCH] Check the return value of glGenTextures() --HG-- extra : rebase_source : e079554f253890d862bfd5d51d7b229e3fcff3d9 --- src/render/opengl/SDL_render_gl.c | 4 ++++ src/render/opengles/SDL_render_gles.c | 5 +++++ src/render/opengles2/SDL_render_gles2.c | 7 +++++-- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/render/opengl/SDL_render_gl.c b/src/render/opengl/SDL_render_gl.c index 0094d84ec..697a974c5 100644 --- a/src/render/opengl/SDL_render_gl.c +++ b/src/render/opengl/SDL_render_gl.c @@ -633,6 +633,10 @@ GL_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture) GL_CheckError("", renderer); renderdata->glGenTextures(1, &data->texture); + if (GL_CheckError("glGenTexures()", renderer) < 0) { + SDL_free(data); + return -1; + } if ((renderdata->GL_ARB_texture_rectangle_supported) /*&& texture->access != SDL_TEXTUREACCESS_TARGET*/){ data->type = GL_TEXTURE_RECTANGLE_ARB; diff --git a/src/render/opengles/SDL_render_gles.c b/src/render/opengles/SDL_render_gles.c index cbbdd0da3..ab0f01d4e 100644 --- a/src/render/opengles/SDL_render_gles.c +++ b/src/render/opengles/SDL_render_gles.c @@ -475,6 +475,11 @@ GLES_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture) renderdata->glGetError(); renderdata->glEnable(GL_TEXTURE_2D); renderdata->glGenTextures(1, &data->texture); + result = renderdata->glGetError(); + if (result != GL_NO_ERROR) { + SDL_free(data); + return GLES_SetError("glGenTextures()", result); + } data->type = GL_TEXTURE_2D; /* no NPOV textures allowed in OpenGL ES (yet) */ diff --git a/src/render/opengles2/SDL_render_gles2.c b/src/render/opengles2/SDL_render_gles2.c index e34cd1b7c..a0ab94365 100644 --- a/src/render/opengles2/SDL_render_gles2.c +++ b/src/render/opengles2/SDL_render_gles2.c @@ -418,6 +418,10 @@ GLES2_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture) /* Allocate the texture */ rdata->glGetError(); rdata->glGenTextures(1, &tdata->texture); + if (rdata->glGetError() != GL_NO_ERROR) { + SDL_free(tdata); + return SDL_SetError("Texture creation failed in glGenTextures()"); + } rdata->glActiveTexture(GL_TEXTURE0); rdata->glBindTexture(tdata->texture_type, tdata->texture); rdata->glTexParameteri(tdata->texture_type, GL_TEXTURE_MIN_FILTER, scaleMode); @@ -425,8 +429,7 @@ GLES2_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture) rdata->glTexParameteri(tdata->texture_type, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); rdata->glTexParameteri(tdata->texture_type, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); rdata->glTexImage2D(tdata->texture_type, 0, format, texture->w, texture->h, 0, format, type, NULL); - if (rdata->glGetError() != GL_NO_ERROR) - { + if (rdata->glGetError() != GL_NO_ERROR) { rdata->glDeleteTextures(1, &tdata->texture); SDL_free(tdata); return SDL_SetError("Texture creation failed");