Fixed bug 1929 - SDL_Texture* from SDL_CreateTexture() causes GL_BindTexture() to segfault
authorSam Lantinga <slouken@libsdl.org>
Tue, 25 Jun 2013 20:21:31 -0700
changeset 7318 46a5a6b8678e
parent 7317 37b77749523b
child 7319 8bdc5aac93d7
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
--- a/src/render/SDL_render.c	Mon Jun 24 22:06:50 2013 -0700
+++ b/src/render/SDL_render.c	Tue Jun 25 20:21:31 2013 -0700
@@ -1739,11 +1739,13 @@
 
     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)