Index: third_party/libpng/pngrtran.c |
diff --git a/third_party/libpng/pngrtran.c b/third_party/libpng/pngrtran.c |
index 33703d46ea175168284afffbe2f776937ab71f4d..0a760cef0273484ec1345af3a2ae1a4e3086a6aa 100644 |
--- a/third_party/libpng/pngrtran.c |
+++ b/third_party/libpng/pngrtran.c |
@@ -1,8 +1,8 @@ |
/* pngrtran.c - transforms the data in a row for PNG readers |
* |
- * Last changed in libpng 1.2.45 [July 7, 2011] |
- * Copyright (c) 1998-2011 Glenn Randers-Pehrson |
+ * Last changed in libpng 1.2.51 [February 6, 2014] |
+ * Copyright (c) 1998-2014 Glenn Randers-Pehrson |
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) |
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) |
* |
@@ -917,7 +917,10 @@ png_init_read_transformations(png_structp png_ptr) |
for (i=0; i<png_ptr->num_trans; i++) |
{ |
if (png_ptr->trans[i] != 0 && png_ptr->trans[i] != 0xff) |
+ { |
k=1; /* Partial transparency is present */ |
+ break; |
+ } |
} |
if (k == 0) |
png_ptr->transformations &= ~PNG_GAMMA; |
@@ -1163,6 +1166,7 @@ png_init_read_transformations(png_structp png_ptr) |
#ifdef PNG_READ_SHIFT_SUPPORTED |
if ((png_ptr->transformations & PNG_SHIFT) && |
+ !(png_ptr->transformations & PNG_EXPAND) && |
(color_type == PNG_COLOR_TYPE_PALETTE)) |
{ |
png_uint_16 i; |
@@ -1183,6 +1187,8 @@ png_init_read_transformations(png_structp png_ptr) |
png_ptr->palette[i].green >>= sg; |
png_ptr->palette[i].blue >>= sb; |
} |
+ |
+ png_ptr->transformations &= ~PNG_SHIFT; |
} |
#endif /* PNG_READ_SHIFT_SUPPORTED */ |
} |
@@ -1373,6 +1379,9 @@ png_do_read_transformations(png_structp png_ptr) |
{ |
if (png_ptr->row_info.color_type == PNG_COLOR_TYPE_PALETTE) |
{ |
+ if (png_ptr->palette == NULL) |
+ png_error (png_ptr, "Palette is NULL in indexed image"); |
+ |
png_do_expand_palette(&(png_ptr->row_info), png_ptr->row_buf + 1, |
png_ptr->palette, png_ptr->trans, png_ptr->num_trans); |
} |