From 260a8e9b3c585e93df17a7391731d9aa641bb619 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Tue, 25 Jun 2013 20:21:31 -0700 Subject: [PATCH] Fixed bug 1929 - SDL_Texture* from SDL_CreateTexture() causes GL_BindTexture() to segfault Charles Huber If SDL_CreateTexture() takes the !IsSupportedFormat() path it will return a SDL_Texture* with a NULL driverdata member. If you then SDL_GL_BindTexture() this will cause a segfault in GL_BindTexture() when it unconditionally dereferences driverdata. --- src/render/SDL_render.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/render/SDL_render.c b/src/render/SDL_render.c index 5167f029d..733760fcc 100644 --- a/src/render/SDL_render.c +++ b/src/render/SDL_render.c @@ -1739,11 +1739,13 @@ int SDL_GL_BindTexture(SDL_Texture *texture, float *texw, float *texh) CHECK_TEXTURE_MAGIC(texture, -1); renderer = texture->renderer; - if (renderer && renderer->GL_BindTexture) { + if (texture->native) { + return SDL_GL_BindTexture(texture->native, texw, texh); + } else if (renderer && renderer->GL_BindTexture) { return renderer->GL_BindTexture(renderer, texture, texw, texh); + } else { + return SDL_Unsupported(); } - - return SDL_Unsupported(); } int SDL_GL_UnbindTexture(SDL_Texture *texture)