From 0e55ebacfcc10e22f39e957c29b9946973ad3194 Mon Sep 17 00:00:00 2001 From: Akira Kakuto Date: Fri, 9 Dec 2016 08:52:59 +0000 Subject: cairo 1.14.8 git-svn-id: svn://tug.org/texlive/trunk@42658 c570f23f-e606-0410-a88d-b1316a301751 --- Build/source/libs/cairo/ChangeLog | 5 +++ Build/source/libs/cairo/README | 4 +- Build/source/libs/cairo/cairo-PATCHES/ChangeLog | 4 ++ Build/source/libs/cairo/cairo-PATCHES/TL-Changes | 4 +- Build/source/libs/cairo/cairo-src/NEWS | 45 +++++++++++++++++++++- .../libs/cairo/cairo-src/build/aclocal.float.m4 | 4 +- Build/source/libs/cairo/cairo-src/cairo-version.h | 2 +- .../source/libs/cairo/cairo-src/src/cairo-debug.c | 2 +- .../libs/cairo/cairo-src/src/cairo-pattern.c | 2 +- .../libs/cairo/cairo-src/src/cairo-scaled-font.c | 24 +++++++++--- .../cairo/cairo-src/src/cairo-surface-observer.c | 2 - .../cairo/cairo-src/src/cairo-truetype-subset.c | 30 ++++++++++++--- .../cairo/cairo-src/src/cairo-xcb-surface-render.c | 2 - .../cairo/cairo-src/src/cairo-xlib-surface-shm.c | 8 ++-- .../libs/cairo/cairo-src/src/cairo-xlib-surface.c | 4 +- Build/source/libs/cairo/configure | 20 +++++----- Build/source/libs/cairo/version.ac | 2 +- 17 files changed, 122 insertions(+), 42 deletions(-) (limited to 'Build') diff --git a/Build/source/libs/cairo/ChangeLog b/Build/source/libs/cairo/ChangeLog index baec6d9f570..587e1a7fc46 100644 --- a/Build/source/libs/cairo/ChangeLog +++ b/Build/source/libs/cairo/ChangeLog @@ -1,3 +1,8 @@ +2016-12-09 Akira Kakuto + + Import cairo-1.14.8. + * version.ac: Adapted. + 2016-02-15 Karl Berry * cairo-PATCHES: rename from cairo-src-PATCHES. diff --git a/Build/source/libs/cairo/README b/Build/source/libs/cairo/README index 853dc23241a..f4f61554b62 100644 --- a/Build/source/libs/cairo/README +++ b/Build/source/libs/cairo/README @@ -1,4 +1,4 @@ - Building cairo-1.14.6 as part of the TL tree + Building cairo-1.14.8 as part of the TL tree ============================================ This directory libs/cairo/ uses a proxy Makefile.am to build the cairo @@ -12,4 +12,4 @@ been translated into equivalent test in libs/cairo/configure.ac. 2012-11-10 Taco Hoekwater 2013-04-15 Peter Breitenlohner -2015-12-28 Akira Kakuto +2016-12-09 Akira Kakuto diff --git a/Build/source/libs/cairo/cairo-PATCHES/ChangeLog b/Build/source/libs/cairo/cairo-PATCHES/ChangeLog index d8fa743af03..6f5e722812f 100644 --- a/Build/source/libs/cairo/cairo-PATCHES/ChangeLog +++ b/Build/source/libs/cairo/cairo-PATCHES/ChangeLog @@ -1,3 +1,7 @@ +2016-12-09 Akira Kakuto + + Import cairo-1.14.8. + 2015-12-28 Akira Kakuto Import cairo-1.14.6. diff --git a/Build/source/libs/cairo/cairo-PATCHES/TL-Changes b/Build/source/libs/cairo/cairo-PATCHES/TL-Changes index 07117c82d20..05c12b8a4ff 100644 --- a/Build/source/libs/cairo/cairo-PATCHES/TL-Changes +++ b/Build/source/libs/cairo/cairo-PATCHES/TL-Changes @@ -1,5 +1,5 @@ -Changes applied to the cairo-1.14.6/ tree as obtained from: - http://cairographics.org/releases/cairo-1.14.6.tar.xz +Changes applied to the cairo-1.14.8/ tree as obtained from: + http://cairographics.org/releases/cairo-1.14.8.tar.xz Removed: Makefile.in diff --git a/Build/source/libs/cairo/cairo-src/NEWS b/Build/source/libs/cairo/cairo-src/NEWS index 3ec0e6c898e..08889d2d054 100644 --- a/Build/source/libs/cairo/cairo-src/NEWS +++ b/Build/source/libs/cairo/cairo-src/NEWS @@ -1,10 +1,53 @@ +Release 1.14.8 (2016-12-07 Bryce Harrington ) +======================================================================== +Bugfix release rolling up backported fixes for the past year. + +For a complete log of changes since 1.14.6, please see: + + http://cairographics.org/releases/ChangeLog.cairo-1.14.8 + +Features +-------- +None + +API Changes +----------- +None + +Dependency Changes +------------------ +None + +Performance Optimizations +------------------------- +None + +Bug Fixes +--------- +* Fix "invalidfont" error on some printers when printing PDFs with + embedded fonts that have glyphs (such as spaces) with + num_contours == 0. (Bug #79897) +* Fix deadlock when destruction of a scaled font indirectly triggers + destruction of a second scaled font, causing the global cache to be + locked twice. (Bug #93891) +* Fix X errors reported to applications when shmdt() is called before + the Attach request is processed, due to missing xcb and xlib calls. +* Fix random failure in record-paint-alpha-clip-mast test case, caused + by an incorrect assumption that a deferred clear can be skipped. + (Bug #84330) +* Fix crash when dealing with an XShmGetImage() failure, caused by a + double free in _get_image_surface(). (Bug #91967) +* Fix build issue when using non-GNU strings utility. (Bug #88639) +* Cleanup debugging text sent to stdout instead of log. (Bug #95227) + + Release 1.14.6 (2015-12-09 Bryce Harrington ) ======================================================================== Simple bugfix release to fix one Windows issue. For a complete log of changes since 1.14.4, please see: - http://cairographics.org/releases/ChangeLog.1.14.6 + http://cairographics.org/releases/ChangeLog.cairo-1.14.6 Features -------- diff --git a/Build/source/libs/cairo/cairo-src/build/aclocal.float.m4 b/Build/source/libs/cairo/cairo-src/build/aclocal.float.m4 index 8f85f0862ba..ca14ea37707 100644 --- a/Build/source/libs/cairo/cairo-src/build/aclocal.float.m4 +++ b/Build/source/libs/cairo/cairo-src/build/aclocal.float.m4 @@ -31,10 +31,10 @@ int main() { return 0; } ]])], [ -if strings - conftest$ac_exeext | grep noonsees >/dev/null ; then +if strings -a conftest$ac_exeext | grep noonsees >/dev/null ; then ax_cv_c_float_words_bigendian=yes fi -if strings - conftest$ac_exeext | grep seesnoon >/dev/null ; then +if strings -a conftest$ac_exeext | grep seesnoon >/dev/null ; then if test "$ax_cv_c_float_words_bigendian" = unknown; then ax_cv_c_float_words_bigendian=no else diff --git a/Build/source/libs/cairo/cairo-src/cairo-version.h b/Build/source/libs/cairo/cairo-src/cairo-version.h index 4c1de000c1c..6c0b0902d3f 100644 --- a/Build/source/libs/cairo/cairo-src/cairo-version.h +++ b/Build/source/libs/cairo/cairo-src/cairo-version.h @@ -3,6 +3,6 @@ #define CAIRO_VERSION_MAJOR 1 #define CAIRO_VERSION_MINOR 14 -#define CAIRO_VERSION_MICRO 6 +#define CAIRO_VERSION_MICRO 8 #endif diff --git a/Build/source/libs/cairo/cairo-src/src/cairo-debug.c b/Build/source/libs/cairo/cairo-src/src/cairo-debug.c index 33d46aa3f79..e7ffe48d28c 100644 --- a/Build/source/libs/cairo/cairo-src/src/cairo-debug.c +++ b/Build/source/libs/cairo/cairo-src/src/cairo-debug.c @@ -262,7 +262,7 @@ _cairo_debug_print_path (FILE *stream, cairo_path_fixed_t *path) box.p1.x, box.p1.y, box.p2.x, box.p2.y); } - printf ("\n"); + fprintf (stream, "\n"); } void diff --git a/Build/source/libs/cairo/cairo-src/src/cairo-pattern.c b/Build/source/libs/cairo/cairo-src/src/cairo-pattern.c index ac5d7af20a2..f0b879836df 100644 --- a/Build/source/libs/cairo/cairo-src/src/cairo-pattern.c +++ b/Build/source/libs/cairo/cairo-src/src/cairo-pattern.c @@ -4614,7 +4614,7 @@ static void _cairo_debug_print_raster_source_pattern (FILE *file, const cairo_raster_source_pattern_t *raster) { - printf (" content: %x, size %dx%d\n", raster->content, raster->extents.width, raster->extents.height); + fprintf (file, " content: %x, size %dx%d\n", raster->content, raster->extents.width, raster->extents.height); } static void diff --git a/Build/source/libs/cairo/cairo-src/src/cairo-scaled-font.c b/Build/source/libs/cairo/cairo-src/src/cairo-scaled-font.c index ac80c97d1c5..a22b36eef19 100644 --- a/Build/source/libs/cairo/cairo-src/src/cairo-scaled-font.c +++ b/Build/source/libs/cairo/cairo-src/src/cairo-scaled-font.c @@ -818,23 +818,35 @@ _cairo_scaled_font_thaw_cache (cairo_scaled_font_t *scaled_font) void _cairo_scaled_font_reset_cache (cairo_scaled_font_t *scaled_font) { + cairo_scaled_glyph_page_t *page; + CAIRO_MUTEX_LOCK (scaled_font->mutex); assert (! scaled_font->cache_frozen); assert (! scaled_font->global_cache_frozen); CAIRO_MUTEX_LOCK (_cairo_scaled_glyph_page_cache_mutex); - while (! cairo_list_is_empty (&scaled_font->glyph_pages)) { - cairo_scaled_glyph_page_t *page = - cairo_list_first_entry (&scaled_font->glyph_pages, - cairo_scaled_glyph_page_t, - link); + cairo_list_foreach_entry (page, + cairo_scaled_glyph_page_t, + &scaled_font->glyph_pages, + link) { cairo_scaled_glyph_page_cache.size -= page->cache_entry.size; _cairo_hash_table_remove (cairo_scaled_glyph_page_cache.hash_table, (cairo_hash_entry_t *) &page->cache_entry); + } + CAIRO_MUTEX_UNLOCK (_cairo_scaled_glyph_page_cache_mutex); + + /* Destroy scaled_font's pages while holding its lock only, and not the + * global page cache lock. The destructor can cause us to recurse and + * end up back here for a different scaled_font. */ + + while (! cairo_list_is_empty (&scaled_font->glyph_pages)) { + page = cairo_list_first_entry (&scaled_font->glyph_pages, + cairo_scaled_glyph_page_t, + link); _cairo_scaled_glyph_page_destroy (scaled_font, page); } - CAIRO_MUTEX_UNLOCK (_cairo_scaled_glyph_page_cache_mutex); + CAIRO_MUTEX_UNLOCK (scaled_font->mutex); } diff --git a/Build/source/libs/cairo/cairo-src/src/cairo-surface-observer.c b/Build/source/libs/cairo/cairo-src/src/cairo-surface-observer.c index 52b013644db..e6f78e6da6f 100644 --- a/Build/source/libs/cairo/cairo-src/src/cairo-surface-observer.c +++ b/Build/source/libs/cairo/cairo-src/src/cairo-surface-observer.c @@ -1218,8 +1218,6 @@ _cairo_surface_observer_mark_dirty (void *abstract_surface, cairo_surface_observer_t *surface = abstract_surface; cairo_status_t status; - printf ("mark-dirty (%d, %d) x (%d, %d)\n", x, y, width, height); - status = CAIRO_STATUS_SUCCESS; if (surface->target->backend->mark_dirty_rectangle) status = surface->target->backend->mark_dirty_rectangle (surface->target, diff --git a/Build/source/libs/cairo/cairo-src/src/cairo-truetype-subset.c b/Build/source/libs/cairo/cairo-src/src/cairo-truetype-subset.c index 645a89abf21..9137ef3aa38 100644 --- a/Build/source/libs/cairo/cairo-src/src/cairo-truetype-subset.c +++ b/Build/source/libs/cairo/cairo-src/src/cairo-truetype-subset.c @@ -653,16 +653,34 @@ cairo_truetype_font_write_glyf_table (cairo_truetype_font_t *font, if (unlikely (status)) goto FAIL; - if (size != 0) { - status = font->backend->load_truetype_table (font->scaled_font_subset->scaled_font, + if (size > 1) { + tt_glyph_data_t *glyph_data; + int num_contours; + + status = font->backend->load_truetype_table (font->scaled_font_subset->scaled_font, TT_TAG_glyf, begin, buffer, &size); if (unlikely (status)) goto FAIL; - status = cairo_truetype_font_remap_composite_glyph (font, buffer, size); - if (unlikely (status)) - goto FAIL; - } + glyph_data = (tt_glyph_data_t *) buffer; + num_contours = (int16_t)be16_to_cpu (glyph_data->num_contours); + if (num_contours < 0) { + status = cairo_truetype_font_remap_composite_glyph (font, buffer, size); + if (unlikely (status)) + goto FAIL; + } else if (num_contours == 0) { + /* num_contours == 0 is undefined in the Opentype + * spec. There are some embedded fonts that have a + * space glyph with num_contours = 0 that fails on + * some printers. The spec requires glyphs without + * contours to have a 0 size glyph entry in the loca + * table. + * + * If num_contours == 0, truncate the glyph to 0 size. + */ + _cairo_array_truncate (&font->output, _cairo_array_num_elements (&font->output) - size); + } + } } status = cairo_truetype_font_align_output (font, &next); diff --git a/Build/source/libs/cairo/cairo-src/src/cairo-xcb-surface-render.c b/Build/source/libs/cairo/cairo-src/src/cairo-xcb-surface-render.c index 044339bce8f..139dcda827a 100644 --- a/Build/source/libs/cairo/cairo-src/src/cairo-xcb-surface-render.c +++ b/Build/source/libs/cairo/cairo-src/src/cairo-xcb-surface-render.c @@ -3399,8 +3399,6 @@ _composite_mask_clip (void *closure, } } - dst->deferred_clear = FALSE; /* assert(trap extents == extents); */ - status = _composite_traps (&info, dst, CAIRO_OPERATOR_SOURCE, mask_pattern, dst_x, dst_y, diff --git a/Build/source/libs/cairo/cairo-src/src/cairo-xlib-surface-shm.c b/Build/source/libs/cairo/cairo-src/src/cairo-xlib-surface-shm.c index fb40699dc1d..9824eff823b 100644 --- a/Build/source/libs/cairo/cairo-src/src/cairo-xlib-surface-shm.c +++ b/Build/source/libs/cairo/cairo-src/src/cairo-xlib-surface-shm.c @@ -441,7 +441,7 @@ static void send_event(cairo_xlib_display_t *display, ev.type = display->shm->event; ev.send_event = 1; /* XXX or lie? */ - ev.serial = NextRequest (display->display); + ev.serial = XNextRequest (display->display); ev.drawable = display->shm->window; ev.major_code = display->shm->opcode; ev.minor_code = X_ShmPutImage; @@ -599,7 +599,7 @@ _cairo_xlib_shm_pool_create(cairo_xlib_display_t *display, goto cleanup; } - pool->attached = NextRequest (dpy); + pool->attached = XNextRequest (dpy); success = XShmAttach (dpy, &pool->shm); #if !IPC_RMID_DEFERRED_RELEASE XSync (dpy, FALSE); @@ -1199,7 +1199,7 @@ _cairo_xlib_shm_surface_mark_active (cairo_surface_t *_shm) cairo_xlib_shm_surface_t *shm = (cairo_xlib_shm_surface_t *) _shm; cairo_xlib_display_t *display = (cairo_xlib_display_t *) _shm->device; - shm->active = NextRequest (display->display); + shm->active = XNextRequest (display->display); } void @@ -1241,7 +1241,7 @@ _cairo_xlib_shm_surface_get_obdata (cairo_surface_t *surface) cairo_xlib_display_t *display = (cairo_xlib_display_t *) surface->device; cairo_xlib_shm_surface_t *shm = (cairo_xlib_shm_surface_t *) surface; - display->shm->last_event = shm->active = NextRequest (display->display); + display->shm->last_event = shm->active = XNextRequest (display->display); return &shm->info->pool->shm; } diff --git a/Build/source/libs/cairo/cairo-src/src/cairo-xlib-surface.c b/Build/source/libs/cairo/cairo-src/src/cairo-xlib-surface.c index 029a542b946..ffea476f68f 100644 --- a/Build/source/libs/cairo/cairo-src/src/cairo-xlib-surface.c +++ b/Build/source/libs/cairo/cairo-src/src/cairo-xlib-surface.c @@ -807,6 +807,7 @@ _get_image_surface (cairo_xlib_surface_t *surface, } cairo_surface_destroy (&image->base); + image = NULL; } } @@ -1011,7 +1012,8 @@ _get_image_surface (cairo_xlib_surface_t *surface, cairo_device_release (&display->base); if (unlikely (status)) { - cairo_surface_destroy (&image->base); + if (image) + cairo_surface_destroy (&image->base); return _cairo_surface_create_in_error (status); } diff --git a/Build/source/libs/cairo/configure b/Build/source/libs/cairo/configure index 38af7a522eb..1257a39e154 100755 --- a/Build/source/libs/cairo/configure +++ b/Build/source/libs/cairo/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for cairo (TeX Live) 1.14.6. +# Generated by GNU Autoconf 2.69 for cairo (TeX Live) 1.14.8. # # Report bugs to . # @@ -580,8 +580,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='cairo (TeX Live)' PACKAGE_TARNAME='cairo--tex-live-' -PACKAGE_VERSION='1.14.6' -PACKAGE_STRING='cairo (TeX Live) 1.14.6' +PACKAGE_VERSION='1.14.8' +PACKAGE_STRING='cairo (TeX Live) 1.14.8' PACKAGE_BUGREPORT='tex-k@tug.org' PACKAGE_URL='' @@ -1349,7 +1349,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures cairo (TeX Live) 1.14.6 to adapt to many kinds of systems. +\`configure' configures cairo (TeX Live) 1.14.8 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1420,7 +1420,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of cairo (TeX Live) 1.14.6:";; + short | recursive ) echo "Configuration of cairo (TeX Live) 1.14.8:";; esac cat <<\_ACEOF @@ -1523,7 +1523,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -cairo (TeX Live) configure 1.14.6 +cairo (TeX Live) configure 1.14.8 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2129,7 +2129,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by cairo (TeX Live) $as_me 1.14.6, which was +It was created by cairo (TeX Live) $as_me 1.14.8, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -4383,7 +4383,7 @@ fi # Define the identity of the package. PACKAGE='cairo--tex-live-' - VERSION='1.14.6' + VERSION='1.14.8' cat >>confdefs.h <<_ACEOF @@ -7273,7 +7273,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by cairo (TeX Live) $as_me 1.14.6, which was +This file was extended by cairo (TeX Live) $as_me 1.14.8, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -7339,7 +7339,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -cairo (TeX Live) config.status 1.14.6 +cairo (TeX Live) config.status 1.14.8 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/Build/source/libs/cairo/version.ac b/Build/source/libs/cairo/version.ac index 711b9a9c961..4dfbd0bc9bb 100644 --- a/Build/source/libs/cairo/version.ac +++ b/Build/source/libs/cairo/version.ac @@ -8,4 +8,4 @@ dnl dnl -------------------------------------------------------- dnl dnl m4-include this file to define the current cairo version -m4_define([cairo_version], [1.14.6]) +m4_define([cairo_version], [1.14.8]) -- cgit v1.2.3