summaryrefslogtreecommitdiffstats
path: root/generic
diff options
context:
space:
mode:
authordgp <dgp@users.sourceforge.net>2015-05-05 19:38:12 (GMT)
committerdgp <dgp@users.sourceforge.net>2015-05-05 19:38:12 (GMT)
commit307c22d55990d4b2ff2981d1a37ef39f88aca78b (patch)
treec3e41a4c66546f44f48d553fbf447659aa824e28 /generic
parent22ebc724fe95500c9c01576ef1f2fc97f849a56a (diff)
parentd1dd76e66ac3f2e94f74fa863b4f90c76e278db4 (diff)
downloadtk-307c22d55990d4b2ff2981d1a37ef39f88aca78b.zip
tk-307c22d55990d4b2ff2981d1a37ef39f88aca78b.tar.gz
tk-307c22d55990d4b2ff2981d1a37ef39f88aca78b.tar.bz2
[06c3fcb136] ImgGetPhoto() had some code misplaced in an earlier commit
so that it failed to tell all callers when the alpha channel was fully opaque. This triggered another bug in the PNG writer where the alpha vs. non-alpha format choice was broken and confused, leading to corrupt png image files.
Diffstat (limited to 'generic')
-rw-r--r--generic/tkImgPNG.c2
-rw-r--r--generic/tkImgPhoto.c6
2 files changed, 4 insertions, 4 deletions
diff --git a/generic/tkImgPNG.c b/generic/tkImgPNG.c
index 8a740d2..d6a706a 100644
--- a/generic/tkImgPNG.c
+++ b/generic/tkImgPNG.c
@@ -3345,7 +3345,7 @@ EncodePNG(
pngPtr->colorType = PNG_COLOR_RGBA;
pngPtr->bytesPerPixel = 4;
} else {
- pngPtr->colorType = PNG_COLOR_RGBA;
+ pngPtr->colorType = PNG_COLOR_RGB;
pngPtr->bytesPerPixel = 3;
}
} else {
diff --git a/generic/tkImgPhoto.c b/generic/tkImgPhoto.c
index 9527c93..63e2fa8 100644
--- a/generic/tkImgPhoto.c
+++ b/generic/tkImgPhoto.c
@@ -3683,6 +3683,9 @@ ImgGetPhoto(
break;
}
}
+ if (!alphaOffset) {
+ blockPtr->offset[3]= -1; /* Tell caller alpha need not be read */
+ }
greenOffset = blockPtr->offset[1] - blockPtr->offset[0];
blueOffset = blockPtr->offset[2] - blockPtr->offset[0];
if (((optPtr->options & OPT_BACKGROUND) && alphaOffset) ||
@@ -3803,9 +3806,6 @@ ImgGetPhoto(
blockPtr->offset[2] = 0;
blockPtr->offset[3]= 1;
}
- if (!alphaOffset) {
- blockPtr->offset[3]= -1;
- }
return data;
}
return NULL;