summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/tracker-extract/tracker-extract-png.c20
1 files changed, 5 insertions, 15 deletions
diff --git a/src/tracker-extract/tracker-extract-png.c b/src/tracker-extract/tracker-extract-png.c
index fcfd5f40e..0e1976541 100644
--- a/src/tracker-extract/tracker-extract-png.c
+++ b/src/tracker-extract/tracker-extract-png.c
@@ -621,7 +621,7 @@ tracker_extract_get_metadata (TrackerExtractInfo *info)
png_structp png_ptr;
png_infop info_ptr;
png_infop end_ptr;
- png_bytepp row_pointers;
+ png_bytep row_data;
guint row;
png_uint_32 width, height;
gint bit_depth, color_type;
@@ -694,20 +694,10 @@ tracker_extract_get_metadata (TrackerExtractInfo *info)
/* Read the image. FIXME We should be able to skip this step and
* just get the info from the end. This causes some errors atm.
*/
- row_pointers = g_new0 (png_bytep, height);
-
- for (row = 0; row < height; row++) {
- row_pointers[row] = png_malloc (png_ptr,
- png_get_rowbytes (png_ptr,info_ptr));
- }
-
- png_read_image (png_ptr, row_pointers);
-
- for (row = 0; row < height; row++) {
- png_free (png_ptr, row_pointers[row]);
- }
-
- g_free (row_pointers);
+ row_data = png_malloc (png_ptr, png_get_rowbytes (png_ptr, info_ptr));
+ for (row = 0; row < height; row++)
+ png_read_row (png_ptr, row_data, NULL);
+ png_free (png_ptr, row_data);
png_read_end (png_ptr, end_ptr);