summaryrefslogtreecommitdiff
blob: b67de786b361551285cd9d32047a58360a6c08fd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
diff -ru cairo-1.6.4/src/cairo-png.c cairo-1.6.4-mod/src/cairo-png.c
--- cairo-1.6.4/src/cairo-png.c	2008-04-11 17:07:25.000000000 -0400
+++ cairo-1.6.4-mod/src/cairo-png.c	2008-08-19 17:19:36.682399853 -0400
@@ -119,6 +119,14 @@
 }
 
 
+/* Starting with libpng-1.2.30, we must explicitly specify an output_flush_fn. 
+ * Otherwise, we will segfault if we are writing to a stream. */
+static void
+png_simple_output_flush_fn (png_structp png_ptr)
+{
+    return;
+}
+
 static cairo_status_t
 write_png (cairo_surface_t	*surface,
 	   png_rw_ptr		write_func,
@@ -179,7 +187,7 @@
 	goto BAIL3;
 #endif
 
-    png_set_write_fn (png, closure, write_func, NULL);
+    png_set_write_fn (png, closure, write_func, png_simple_output_flush_fn);
 
     switch (image->format) {
     case CAIRO_FORMAT_ARGB32: