>From da3897abf1e45741b122b52df37a5cbc68b2ad5d Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Fri, 3 May 2019 12:16:33 -0700 Subject: [PATCH] Pacify librsvg 2.45.1 and later * src/image.c (svg_load_image): Pacify librsvg 2.45.1 and later, and add a FIXME comment about the deprecated librsvg functions. --- src/image.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/image.c b/src/image.c index bf594987eb..3d724a773b 100644 --- a/src/image.c +++ b/src/image.c @@ -6735,7 +6735,7 @@ my_error_exit (j_common_ptr cinfo) /* Init source method for JPEG data source manager. Called by - jpeg_read_header() before any data is actually read. See + jpeg_read_header before any data is actually read. See libjpeg.doc from the JPEG lib distribution. */ static void @@ -6745,7 +6745,7 @@ our_common_init_source (j_decompress_ptr cinfo) /* Method to terminate data source. Called by - jpeg_finish_decompress() after all data has been processed. */ + jpeg_finish_decompress after all data has been processed. */ static void our_common_term_source (j_decompress_ptr cinfo) @@ -9456,7 +9456,18 @@ svg_load_image (struct frame *f, struct image *img, char *contents, See rsvg bug 596114 - "image refs are relative to curdir, not .svg file" . */ if (filename) - rsvg_handle_set_base_uri(rsvg_handle, filename); + rsvg_handle_set_base_uri (rsvg_handle, filename); + + /* Suppress GCC deprecation warnings starting in librsvg 2.45.1 for + rsvg_handle_write and rsvg_handle_close. FIXME: Use functions + like rsvg_handle_new_from_gfile_sync on newer librsvg versions, + and remove this hack. */ + #if GNUC_PREREQ (4, 6, 0) + #pragma GCC diagnostic push + #endif + #if LIBRSVG_CHECK_VERSION (2, 45, 1) && GNUC_PREREQ (4, 2, 0) + #pragma GCC diagnostic ignored "-Wdeprecated-declarations" + #endif /* Parse the contents argument and fill in the rsvg_handle. */ rsvg_handle_write (rsvg_handle, (unsigned char *) contents, size, &err); @@ -9467,6 +9478,10 @@ svg_load_image (struct frame *f, struct image *img, char *contents, rsvg_handle_close (rsvg_handle, &err); if (err) goto rsvg_error; + #if GNUC_PREREQ (4, 6, 0) + #pragma GCC diagnostic pop + #endif + rsvg_handle_get_dimensions (rsvg_handle, &dimension_data); if (! check_image_size (f, dimension_data.width, dimension_data.height)) { -- 2.21.0