fix glDrawPixels(GL_COLOR_INDEX, GL_BITMAP) bug 9044
authorBrian Paul <brian.paul@tungstengraphics.com>
Thu, 16 Nov 2006 14:44:23 +0000 (14:44 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Thu, 16 Nov 2006 14:44:23 +0000 (14:44 +0000)
docs/relnotes-6.5.2.html
src/mesa/main/image.c

index 1ba9364..f582c3c 100644 (file)
@@ -66,6 +66,7 @@ copy texturing).
 <li>Fixed some fragment program bugs in Intel i915 DRI driver
 <li>Fixed glGetVertexAttribfvARB bug 8883
 <li>Implemented glGetUniform[fi]vARB() functions
+<li>Fixed glDrawPixels(GL_COLOR_INDEX, GL_BITMAP) segfault (bug 9044)
 </ul>
 
 
index 695aab5..6ff4089 100644 (file)
@@ -1168,7 +1168,7 @@ _mesa_pack_rgba_span_float(GLcontext *ctx, GLuint n, GLfloat rgba[][4],
    const GLint comps = _mesa_components_in_format(dstFormat);
    GLuint i;
 
-   if (dstType != GL_FLOAT) {
+   if (dstType != GL_FLOAT || ctx->Color.ClampReadColor == GL_TRUE) {
       /* need to clamp to [0, 1] */
       transferOps |= IMAGE_CLAMP_BIT;
    }
@@ -1182,7 +1182,7 @@ _mesa_pack_rgba_span_float(GLcontext *ctx, GLuint n, GLfloat rgba[][4],
 
    if (dstFormat == GL_LUMINANCE || dstFormat == GL_LUMINANCE_ALPHA) {
       /* compute luminance values */
-      if (ctx->Color.ClampReadColor == GL_TRUE || dstType != GL_FLOAT) {
+      if (dstType != GL_FLOAT || ctx->Color.ClampReadColor == GL_TRUE) {
          for (i = 0; i < n; i++) {
             GLfloat sum = rgba[i][RCOMP] + rgba[i][GCOMP] + rgba[i][BCOMP];
             luminance[i] = CLAMP(sum, 0.0F, 1.0F);
@@ -4173,7 +4173,7 @@ _mesa_unpack_image( GLuint dimensions,
    if (width <= 0 || height <= 0 || depth <= 0)
       return NULL;  /* generate error later */
 
-   if (format == GL_BITMAP) {
+   if (type == GL_BITMAP) {
       bytesPerRow = (width + 7) >> 3;
       flipBytes = !unpack->LsbFirst;
       swap2 = swap4 = GL_FALSE;