[libpng16] Use unsigned hex constants in "reciprocal" computations

This commit is contained in:
Glenn Randers-Pehrson 2015-08-17 12:40:19 -05:00
parent d8b93c29a7
commit 268c7bf68b
2 changed files with 4 additions and 4 deletions

View File

@ -88,7 +88,7 @@ png_get_int_32)(png_const_bytep buf)
if ((uval & 0x80000000UL) == 0) /* non-negative */ if ((uval & 0x80000000UL) == 0) /* non-negative */
return uval; return uval;
uval = (uval ^ 0xffffffffUL) + 1; /* 2's complement: -x = ~x+1 */ uval = (uval ^ (png_uint_32)0xffffffffUL) + 1; /* 2's complement: -x = ~x+1 */
return -(png_int_32)uval; return -(png_int_32)uval;
} }

View File

@ -1570,7 +1570,7 @@ png_write_image_16bit(png_voidp argument)
* is only initialized when required. * is only initialized when required.
*/ */
if (alpha > 0 && alpha < 65535) if (alpha > 0 && alpha < 65535)
reciprocal = ((0xffffUL<<15)+(alpha>>1))/alpha; reciprocal = ((0xffffU<<15)+(alpha>>1))/alpha;
c = channels; c = channels;
do /* always at least one channel */ do /* always at least one channel */
@ -1621,7 +1621,7 @@ png_write_image_16bit(png_voidp argument)
* calculation can be done to 15 bits of accuracy; however, the output needs to * calculation can be done to 15 bits of accuracy; however, the output needs to
* be scaled in the range 0..255*65535, so include that scaling here. * be scaled in the range 0..255*65535, so include that scaling here.
*/ */
# define UNP_RECIPROCAL(alpha) ((((0xffffUL*0xffU)<<7)+(alpha>>1))/alpha) # define UNP_RECIPROCAL(alpha) ((((0xffffU*0xffU)<<7)+(alpha>>1))/alpha)
static png_byte static png_byte
png_unpremultiply(png_uint_32 component, png_uint_32 alpha, png_unpremultiply(png_uint_32 component, png_uint_32 alpha,
@ -1836,7 +1836,7 @@ png_image_set_PLTE(png_image_write_control *display)
* divided by 128 (i.e. asr 7). * divided by 128 (i.e. asr 7).
*/ */
if (alphabyte > 0 && alphabyte < 255) if (alphabyte > 0 && alphabyte < 255)
reciprocal = (((0xffffUL*0xffU)<<7)+(alpha>>1))/alpha; reciprocal = (((0xffffU*0xffU)<<7)+(alpha>>1))/alpha;
tRNS[i] = alphabyte; tRNS[i] = alphabyte;
if (alphabyte < 255) if (alphabyte < 255)