cvs: gd /libgd/src gd_tiff.c
[email protected] ("Nuno Lopes") Sat, 06 Oct 2007 10:52:09 -0000
| Newsgroups | php.gd.cvs |
|---|---|
| Message-ID | <cvsnlopess1191667929@cvsserver> |
nlopess Sat Oct 6 10:52:09 2007 UTC
Modified files:
/gd/libgd/src gd_tiff.c
Log:
replace pow(2, ) with a bitwise shift
add comment to note that no overflow check is necessary in the colorMap* allocations
http://cvs.php.net/viewvc.cgi/gd/libgd/src/gd_tiff.c?r1=1.8&r2=1.9&diff_format=u
Index: gd/libgd/src/gd_tiff.c
diff -u gd/libgd/src/gd_tiff.c:1.8 gd/libgd/src/gd_tiff.c:1.9
--- gd/libgd/src/gd_tiff.c:1.8 Sat Oct 6 10:42:17 2007
+++ gd/libgd/src/gd_tiff.c Sat Oct 6 10:52:09 2007
@@ -29,7 +29,7 @@
----------------------------------------------------------------------------
*/
-/* $Id: gd_tiff.c,v 1.8 2007/10/06 10:42:17 nlopess Exp $ */
+/* $Id: gd_tiff.c,v 1.9 2007/10/06 10:52:09 nlopess Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -249,10 +249,10 @@
/* build the color map for 8 bit images */
if(bitDepth != 24) {
- /*TODO: Add checking */
- colorMapRed = (uint16 *) gdMalloc(3 * pow(2, bitsPerSample));
- colorMapGreen = (uint16 *) gdMalloc(3 * pow(2, bitsPerSample));
- colorMapBlue = (uint16 *) gdMalloc(3 * pow(2, bitsPerSample));
+ /* no overflow check is necessary because bitsPerSample is at most 8 and the following doesn't overflow */
+ colorMapRed = (uint16 *) gdMalloc(3 * (1 << bitsPerSample));
+ colorMapGreen = (uint16 *) gdMalloc(3 * (1 << bitsPerSample));
+ colorMapBlue = (uint16 *) gdMalloc(3 * (1 << bitsPerSample));
for(i = 0; i < image->colorsTotal; i++) {
colorMapRed[i] = gdImageRed(image,i) + (gdImageRed(image,i) * 256);
@@ -409,7 +409,7 @@
uint32 offset;
TIFFGetField(tiff, TIFFTAG_BITSPERSAMPLE, &bitsPerSample);
- offset = pow(2, bitsPerSample);
+ offset = 1 << bitsPerSample;
if(color == 0) {
val = ctx.red[index];