Static analysis fix: division by zero.
authorRyan C. Gordon <icculus@icculus.org>
Thu, 20 Mar 2014 11:14:44 -0400
changeset 8650 058c88ce501c
parent 8649 4ee50f124da2
child 8651 b1cb565609dc
Static analysis fix: division by zero.
src/render/SDL_render.c
src/render/opengl/SDL_render_gl.c
--- a/src/render/SDL_render.c	Thu Mar 20 10:41:47 2014 -0400
+++ b/src/render/SDL_render.c	Thu Mar 20 11:14:44 2014 -0400
@@ -404,6 +404,10 @@
     if (!format) {
         format = renderer->info.texture_formats[0];
     }
+    if (SDL_BYTESPERPIXEL(format) == 0) {
+        SDL_SetError("Invalid texture format");
+        return NULL;
+    }
     if (SDL_ISPIXELFORMAT_INDEXED(format)) {
         SDL_SetError("Palettized textures are not supported");
         return NULL;
--- a/src/render/opengl/SDL_render_gl.c	Thu Mar 20 10:41:47 2014 -0400
+++ b/src/render/opengl/SDL_render_gl.c	Thu Mar 20 11:14:44 2014 -0400
@@ -24,6 +24,7 @@
 
 #include "SDL_hints.h"
 #include "SDL_log.h"
+#include "SDL_assert.h"
 #include "SDL_opengl.h"
 #include "../SDL_sysrender.h"
 #include "SDL_shaders_gl.h"
@@ -798,14 +799,16 @@
 {
     GL_RenderData *renderdata = (GL_RenderData *) renderer->driverdata;
     GL_TextureData *data = (GL_TextureData *) texture->driverdata;
+    const int texturebpp = SDL_BYTESPERPIXEL(texture->format);
+
+    SDL_assert(texturebpp != 0);  /* otherwise, division by zero later. */
 
     GL_ActivateRenderer(renderer);
 
     renderdata->glEnable(data->type);
     renderdata->glBindTexture(data->type, data->texture);
     renderdata->glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
-    renderdata->glPixelStorei(GL_UNPACK_ROW_LENGTH,
-                              (pitch / SDL_BYTESPERPIXEL(texture->format)));
+    renderdata->glPixelStorei(GL_UNPACK_ROW_LENGTH, (pitch / texturebpp));
     renderdata->glTexSubImage2D(data->type, 0, rect->x, rect->y, rect->w,
                                 rect->h, data->format, data->formattype,
                                 pixels);