diff options
33 files changed, 233 insertions, 94 deletions
diff --git a/Build/source/libs/README b/Build/source/libs/README index 2aa2addb967..421d43486d3 100644 --- a/Build/source/libs/README +++ b/Build/source/libs/README @@ -9,7 +9,7 @@ bypassing or using the original one. See also comments in ../texk/README. -cairo 1.14.10 - checked 20jun17 +cairo 1.14.12 - checked 07dec17 http://cairographics.org/releases/ freetype2 2.8.1 - checked 16sep17 diff --git a/Build/source/libs/cairo/ChangeLog b/Build/source/libs/cairo/ChangeLog index c9ca2d7db28..fce379febab 100644 --- a/Build/source/libs/cairo/ChangeLog +++ b/Build/source/libs/cairo/ChangeLog @@ -1,3 +1,8 @@ +2017-12-07 Akira Kakuto <kakuto@fuk.kindai.ac.jp> + + Import cairo-1.14.12. + * version.ac: Adapted. + 2017-06-20 Akira Kakuto <kakuto@fuk.kindai.ac.jp> Import cairo-1.14.10. diff --git a/Build/source/libs/cairo/README b/Build/source/libs/cairo/README index aa562e334cb..297acbcd9be 100644 --- a/Build/source/libs/cairo/README +++ b/Build/source/libs/cairo/README @@ -1,4 +1,4 @@ - Building cairo-1.14.10 as part of the TL tree + Building cairo-1.14.12 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 <taco@metatex.org> 2013-04-15 Peter Breitenlohner <peb@mppmu.mpg.de> -2016-12-09 Akira Kakuto <kakuto@fuk.kindai.ac.jp> +2017-12-07 Akira Kakuto <kakuto@fuk.kindai.ac.jp> diff --git a/Build/source/libs/cairo/TLpatches/ChangeLog b/Build/source/libs/cairo/TLpatches/ChangeLog index 9ff71139b77..b8ee20cf6b0 100644 --- a/Build/source/libs/cairo/TLpatches/ChangeLog +++ b/Build/source/libs/cairo/TLpatches/ChangeLog @@ -1,3 +1,7 @@ +2017-12-07 Akira Kakuto <kakuto@fuk.kindai.ac.jp> + + Import cairo-1.14.12. + 2017-06-20 Akira Kakuto <kakuto@fuk.kindai.ac.jp> Import cairo-1.14.10. diff --git a/Build/source/libs/cairo/TLpatches/TL-Changes b/Build/source/libs/cairo/TLpatches/TL-Changes index d7f402d25bd..94ffe89d6ac 100644 --- a/Build/source/libs/cairo/TLpatches/TL-Changes +++ b/Build/source/libs/cairo/TLpatches/TL-Changes @@ -1,5 +1,5 @@ -Changes applied to the cairo-1.14.10/ tree as obtained from: - http://cairographics.org/releases/cairo-1.14.10.tar.xz +Changes applied to the cairo-1.14.12/ tree as obtained from: + http://cairographics.org/releases/cairo-1.14.12.tar.xz Removed: Makefile.in diff --git a/Build/source/libs/cairo/cairo-src/NEWS b/Build/source/libs/cairo/cairo-src/NEWS index 16381fbb01d..c0b5db5b1a6 100644 --- a/Build/source/libs/cairo/cairo-src/NEWS +++ b/Build/source/libs/cairo/cairo-src/NEWS @@ -1,3 +1,46 @@ +Release 1.14.12 (2017-06-13 Bryce Harrington <bryce@osg.samsung.com>) +======================================================================== +Another bugfix release rolling up backported fixes for the past half year. + +For a complete log of changes since 1.14.10, please see: + + http://cairographics.org/releases/ChangeLog.cairo-1.14.12 + + +Features +-------- +None + +API Changes +----------- +None + +Dependency Changes +------------------ +None + +Performance Optimizations +------------------------- +None + +Bug Fixes +--------- +* Fix assertion hit with PDFs using Type 4 fonts rendered with user + fonts, due to error when destroying glyph page. + (Bug #103335) +* Fix build error with util/font-view +* Fix handling of truetype fonts with excessively long font names + (Bug #103249) +* Fix falling back to system font with PDFs using certain embedded + fonts, due to truncated font names. + (Bug #103249) +* Fix sigabrt printing documents with fonts lacking the mandatory .nodef + glyph. + (Bug #102922) +* Fix undefined-behavior with integer math. +* Fix various warnings and typos + + Release 1.14.10 (2017-06-13 Bryce Harrington <bryce@osg.samsung.com>) ======================================================================== Bugfix release rolling up backported fixes for the past half year. diff --git a/Build/source/libs/cairo/cairo-src/autogen.sh b/Build/source/libs/cairo/cairo-src/autogen.sh index 4d113f8be5f..4b10251db94 100755 --- a/Build/source/libs/cairo/cairo-src/autogen.sh +++ b/Build/source/libs/cairo/cairo-src/autogen.sh @@ -9,7 +9,7 @@ cd $srcdir AUTORECONF=`which autoreconf` if test -z $AUTORECONF; then - echo "*** No autoreconf found, please intall it ***" + echo "*** No autoreconf found, please install it ***" exit 1 fi diff --git a/Build/source/libs/cairo/cairo-src/build/aclocal.gtk-doc.m4 b/Build/source/libs/cairo/cairo-src/build/aclocal.gtk-doc.m4 deleted file mode 100644 index bfdfa1da69a..00000000000 --- a/Build/source/libs/cairo/cairo-src/build/aclocal.gtk-doc.m4 +++ /dev/null @@ -1,39 +0,0 @@ -dnl -*- mode: autoconf -*- - -# serial 1 - -dnl Usage: -dnl GTK_DOC_CHECK([minimum-gtk-doc-version]) -AC_DEFUN([GTK_DOC_CHECK], -[ - AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first - AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first - dnl for overriding the documentation installation directory - AC_ARG_WITH([html-dir], - AS_HELP_STRING([--with-html-dir=PATH], [path to installed docs]),, - [with_html_dir='${datadir}/gtk-doc/html']) - HTML_DIR="$with_html_dir" - AC_SUBST([HTML_DIR]) - - dnl enable/disable documentation building - AC_ARG_ENABLE([gtk-doc], - AS_HELP_STRING([--enable-gtk-doc], - [use gtk-doc to build documentation [[default=no]]]),, - [enable_gtk_doc=no]) - - if test x$enable_gtk_doc = xyes; then - ifelse([$1],[], - [PKG_CHECK_EXISTS([gtk-doc],, - AC_MSG_ERROR([gtk-doc not installed and --enable-gtk-doc requested]))], - [PKG_CHECK_EXISTS([gtk-doc >= $1],, - AC_MSG_ERROR([You need to have gtk-doc >= $1 installed to build gtk-doc]))]) - fi - - AC_MSG_CHECKING([whether to build gtk-doc documentation]) - AC_MSG_RESULT($enable_gtk_doc) - - AC_PATH_PROGS(GTKDOC_CHECK,gtkdoc-check,) - - AM_CONDITIONAL([ENABLE_GTK_DOC], [test x$enable_gtk_doc = xyes]) - AM_CONDITIONAL([GTK_DOC_USE_LIBTOOL], [test -n "$LIBTOOL"]) -]) diff --git a/Build/source/libs/cairo/cairo-src/build/configure.ac.system b/Build/source/libs/cairo/cairo-src/build/configure.ac.system index b9d71c8d783..915b42b4636 100644 --- a/Build/source/libs/cairo/cairo-src/build/configure.ac.system +++ b/Build/source/libs/cairo/cairo-src/build/configure.ac.system @@ -110,9 +110,11 @@ dnl check for misc headers and functions AC_CHECK_HEADERS([libgen.h byteswap.h signal.h setjmp.h fenv.h sys/wait.h]) AC_CHECK_FUNCS([ctime_r drand48 flockfile funlockfile getline link strndup]) -dnl check for win32 headers (this detects mingw as well) -AC_CHECK_HEADERS([windows.h], have_windows=yes, have_windows=no) - +dnl Check if the runtime platform is a native Win32 host. +AC_COMPILE_IFELSE([[ +#ifdef _WIN32 + choke me +#endif]], [have_windows=no], [have_windows=yes]) dnl Possible headers for mkdir AC_CHECK_HEADERS([sys/stat.h io.h]) diff --git a/Build/source/libs/cairo/cairo-src/build/gtk-doc.m4 b/Build/source/libs/cairo/cairo-src/build/gtk-doc.m4 new file mode 100644 index 00000000000..36755432b50 --- /dev/null +++ b/Build/source/libs/cairo/cairo-src/build/gtk-doc.m4 @@ -0,0 +1,88 @@ +dnl -*- mode: autoconf -*- + +# serial 2 + +dnl Usage: +dnl GTK_DOC_CHECK([minimum-gtk-doc-version]) +AC_DEFUN([GTK_DOC_CHECK], +[ + AC_REQUIRE([PKG_PROG_PKG_CONFIG]) + AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first + AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first + + ifelse([$1],[],[gtk_doc_requires="gtk-doc"],[gtk_doc_requires="gtk-doc >= $1"]) + AC_MSG_CHECKING([for gtk-doc]) + PKG_CHECK_EXISTS([$gtk_doc_requires],[have_gtk_doc=yes],[have_gtk_doc=no]) + AC_MSG_RESULT($have_gtk_doc) + + if test "$have_gtk_doc" = "no"; then + AC_MSG_WARN([ + You will not be able to create source packages with 'make dist' + because $gtk_doc_requires is not found.]) + fi + + dnl check for tools we added during development + dnl Use AC_CHECK_PROG to avoid the check target using an absolute path that + dnl may not be writable by the user. Currently, automake requires that the + dnl test name must end in '.test'. + dnl https://bugzilla.gnome.org/show_bug.cgi?id=701638 + AC_CHECK_PROG([GTKDOC_CHECK],[gtkdoc-check],[gtkdoc-check.test]) + AC_PATH_PROG([GTKDOC_CHECK_PATH],[gtkdoc-check]) + AC_PATH_PROGS([GTKDOC_REBASE],[gtkdoc-rebase],[true]) + AC_PATH_PROG([GTKDOC_MKPDF],[gtkdoc-mkpdf]) + + dnl for overriding the documentation installation directory + AC_ARG_WITH([html-dir], + AS_HELP_STRING([--with-html-dir=PATH], [path to installed docs]),, + [with_html_dir='${datadir}/gtk-doc/html']) + HTML_DIR="$with_html_dir" + AC_SUBST([HTML_DIR]) + + dnl enable/disable documentation building + AC_ARG_ENABLE([gtk-doc], + AS_HELP_STRING([--enable-gtk-doc], + [use gtk-doc to build documentation [[default=no]]]),, + [enable_gtk_doc=no]) + + AC_MSG_CHECKING([whether to build gtk-doc documentation]) + AC_MSG_RESULT($enable_gtk_doc) + + if test "x$enable_gtk_doc" = "xyes" && test "$have_gtk_doc" = "no"; then + AC_MSG_ERROR([ + You must have $gtk_doc_requires installed to build documentation for + $PACKAGE_NAME. Please install gtk-doc or disable building the + documentation by adding '--disable-gtk-doc' to '[$]0'.]) + fi + + dnl don't check for glib if we build glib + if test "x$PACKAGE_NAME" != "xglib"; then + dnl don't fail if someone does not have glib + PKG_CHECK_MODULES(GTKDOC_DEPS, glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0,,[:]) + fi + + dnl enable/disable output formats + AC_ARG_ENABLE([gtk-doc-html], + AS_HELP_STRING([--enable-gtk-doc-html], + [build documentation in html format [[default=yes]]]),, + [enable_gtk_doc_html=yes]) + AC_ARG_ENABLE([gtk-doc-pdf], + AS_HELP_STRING([--enable-gtk-doc-pdf], + [build documentation in pdf format [[default=no]]]),, + [enable_gtk_doc_pdf=no]) + + if test -z "$GTKDOC_MKPDF"; then + enable_gtk_doc_pdf=no + fi + + if test -z "$AM_DEFAULT_VERBOSITY"; then + AM_DEFAULT_VERBOSITY=1 + fi + AC_SUBST([AM_DEFAULT_VERBOSITY]) + + AM_CONDITIONAL([HAVE_GTK_DOC], [test x$have_gtk_doc = xyes]) + AM_CONDITIONAL([ENABLE_GTK_DOC], [test x$enable_gtk_doc = xyes]) + AM_CONDITIONAL([GTK_DOC_BUILD_HTML], [test x$enable_gtk_doc_html = xyes]) + AM_CONDITIONAL([GTK_DOC_BUILD_PDF], [test x$enable_gtk_doc_pdf = xyes]) + AM_CONDITIONAL([GTK_DOC_USE_LIBTOOL], [test -n "$LIBTOOL"]) + AM_CONDITIONAL([GTK_DOC_USE_REBASE], [test -n "$GTKDOC_REBASE"]) +]) diff --git a/Build/source/libs/cairo/cairo-src/cairo-version.h b/Build/source/libs/cairo/cairo-src/cairo-version.h index dd31ba2f1c5..1f17dd6c6ba 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 10 +#define CAIRO_VERSION_MICRO 12 #endif diff --git a/Build/source/libs/cairo/cairo-src/config.h.in b/Build/source/libs/cairo/cairo-src/config.h.in index 22bb980b493..5bb49725685 100644 --- a/Build/source/libs/cairo/cairo-src/config.h.in +++ b/Build/source/libs/cairo/cairo-src/config.h.in @@ -258,9 +258,6 @@ /* Define to 1 if you have the `waitpid' function. */ #undef HAVE_WAITPID -/* Define to 1 if you have the <windows.h> header file. */ -#undef HAVE_WINDOWS_H - /* Define to 1 if you have the <X11/extensions/shmproto.h> header file. */ #undef HAVE_X11_EXTENSIONS_SHMPROTO_H diff --git a/Build/source/libs/cairo/cairo-src/src/cairo-bentley-ottmann-rectangular.c b/Build/source/libs/cairo/cairo-src/src/cairo-bentley-ottmann-rectangular.c index 5541bdc3a2d..cb2e30c8a96 100644 --- a/Build/source/libs/cairo/cairo-src/src/cairo-bentley-ottmann-rectangular.c +++ b/Build/source/libs/cairo/cairo-src/src/cairo-bentley-ottmann-rectangular.c @@ -593,6 +593,12 @@ sweep_line_insert (sweep_line_t *sweep, rectangle_t *rectangle) pqueue_push (sweep, rectangle); } +static int +sweep_line_setjmp (sweep_line_t *sweep_line) +{ + return setjmp (sweep_line->unwind); +} + static cairo_status_t _cairo_bentley_ottmann_tessellate_rectangular (rectangle_t **rectangles, int num_rectangles, @@ -609,7 +615,7 @@ _cairo_bentley_ottmann_tessellate_rectangular (rectangle_t **rectangles, rectangles, num_rectangles, fill_rule, do_traps, container); - if ((status = setjmp (sweep_line.unwind))) + if ((status = sweep_line_setjmp (&sweep_line))) return status; rectangle = rectangle_pop_start (&sweep_line); diff --git a/Build/source/libs/cairo/cairo-src/src/cairo-cff-subset.c b/Build/source/libs/cairo/cairo-src/src/cairo-cff-subset.c index 775ca61befc..c93a8bd8696 100644 --- a/Build/source/libs/cairo/cairo-src/src/cairo-cff-subset.c +++ b/Build/source/libs/cairo/cairo-src/src/cairo-cff-subset.c @@ -41,7 +41,7 @@ * http://www.adobe.com/content/dam/Adobe/en/devnet/font/pdfs/5177.Type2.pdf */ -#define _BSD_SOURCE /* for snprintf(), strdup() */ +#define _DEFAULT_SOURCE /* for snprintf(), strdup() */ #include "cairoint.h" #include "cairo-array-private.h" diff --git a/Build/source/libs/cairo/cairo-src/src/cairo-fixed-private.h b/Build/source/libs/cairo/cairo-src/src/cairo-fixed-private.h index 9ff8f750392..5f9ce684c3f 100644 --- a/Build/source/libs/cairo/cairo-src/src/cairo-fixed-private.h +++ b/Build/source/libs/cairo/cairo-src/src/cairo-fixed-private.h @@ -223,7 +223,7 @@ _cairo_fixed_integer_ceil (cairo_fixed_t f) if (f > 0) return ((f - 1)>>CAIRO_FIXED_FRAC_BITS) + 1; else - return - (-f >> CAIRO_FIXED_FRAC_BITS); + return - ((cairo_fixed_t)(-(cairo_fixed_unsigned_t)f) >> CAIRO_FIXED_FRAC_BITS); } /* A bunch of explicit 16.16 operators; we need these diff --git a/Build/source/libs/cairo/cairo-src/src/cairo-ft-font.c b/Build/source/libs/cairo/cairo-src/src/cairo-ft-font.c index a997b93bfe9..462d1e25fd8 100644 --- a/Build/source/libs/cairo/cairo-src/src/cairo-ft-font.c +++ b/Build/source/libs/cairo/cairo-src/src/cairo-ft-font.c @@ -38,7 +38,7 @@ * Carl Worth <cworth@cworth.org> */ -#define _BSD_SOURCE /* for strdup() */ +#define _DEFAULT_SOURCE /* for strdup() */ #include "cairoint.h" #include "cairo-error-private.h" diff --git a/Build/source/libs/cairo/cairo-src/src/cairo-output-stream.c b/Build/source/libs/cairo/cairo-src/src/cairo-output-stream.c index 369a59bfba8..05d9a2a005d 100644 --- a/Build/source/libs/cairo/cairo-src/src/cairo-output-stream.c +++ b/Build/source/libs/cairo/cairo-src/src/cairo-output-stream.c @@ -33,7 +33,7 @@ * Kristian Høgsberg <krh@redhat.com> */ -#define _BSD_SOURCE /* for snprintf() */ +#define _DEFAULT_SOURCE /* for snprintf() */ #include "cairoint.h" #include "cairo-output-stream-private.h" @@ -490,9 +490,13 @@ _cairo_output_stream_vprintf (cairo_output_stream_t *stream, single_fmt, va_arg (ap, long int)); } break; - case 's': - snprintf (buffer, sizeof buffer, - single_fmt, va_arg (ap, const char *)); + case 's': { + /* Write out strings as they may be larger than the buffer. */ + const char *s = va_arg (ap, const char *); + int len = strlen(s); + _cairo_output_stream_write (stream, s, len); + buffer[0] = 0; + } break; case 'f': _cairo_dtostr (buffer, sizeof buffer, va_arg (ap, double), FALSE); diff --git a/Build/source/libs/cairo/cairo-src/src/cairo-path-stroke-boxes.c b/Build/source/libs/cairo/cairo-src/src/cairo-path-stroke-boxes.c index 7f25bf76cf7..fba170c638a 100644 --- a/Build/source/libs/cairo/cairo-src/src/cairo-path-stroke-boxes.c +++ b/Build/source/libs/cairo/cairo-src/src/cairo-path-stroke-boxes.c @@ -36,7 +36,7 @@ * Chris Wilson <chris@chris-wilson.co.uk> */ -#define _BSD_SOURCE /* for hypot() */ +#define _DEFAULT_SOURCE /* for hypot() */ #include "cairoint.h" #include "cairo-box-inline.h" diff --git a/Build/source/libs/cairo/cairo-src/src/cairo-path-stroke-polygon.c b/Build/source/libs/cairo/cairo-src/src/cairo-path-stroke-polygon.c index e5082bbec68..29050fa7692 100644 --- a/Build/source/libs/cairo/cairo-src/src/cairo-path-stroke-polygon.c +++ b/Build/source/libs/cairo/cairo-src/src/cairo-path-stroke-polygon.c @@ -37,7 +37,7 @@ * Chris Wilson <chris@chris-wilson.co.uk> */ -#define _BSD_SOURCE /* for hypot() */ +#define _DEFAULT_SOURCE /* for hypot() */ #include "cairoint.h" #include "cairo-box-inline.h" diff --git a/Build/source/libs/cairo/cairo-src/src/cairo-path-stroke-tristrip.c b/Build/source/libs/cairo/cairo-src/src/cairo-path-stroke-tristrip.c index 6ce4131cc0f..3178765608d 100644 --- a/Build/source/libs/cairo/cairo-src/src/cairo-path-stroke-tristrip.c +++ b/Build/source/libs/cairo/cairo-src/src/cairo-path-stroke-tristrip.c @@ -37,7 +37,7 @@ * Chris Wilson <chris@chris-wilson.co.uk> */ -#define _BSD_SOURCE /* for hypot() */ +#define _DEFAULT_SOURCE /* for hypot() */ #include "cairoint.h" #include "cairo-box-inline.h" diff --git a/Build/source/libs/cairo/cairo-src/src/cairo-path-stroke.c b/Build/source/libs/cairo/cairo-src/src/cairo-path-stroke.c index 4d4ede81361..64cec8f272e 100644 --- a/Build/source/libs/cairo/cairo-src/src/cairo-path-stroke.c +++ b/Build/source/libs/cairo/cairo-src/src/cairo-path-stroke.c @@ -36,7 +36,7 @@ * Chris Wilson <chris@chris-wilson.co.uk> */ -#define _BSD_SOURCE /* for hypot() */ +#define _DEFAULT_SOURCE /* for hypot() */ #include "cairoint.h" #include "cairo-box-inline.h" diff --git a/Build/source/libs/cairo/cairo-src/src/cairo-pdf-surface.c b/Build/source/libs/cairo/cairo-src/src/cairo-pdf-surface.c index ef94e39fd10..fd7dc7d5606 100644 --- a/Build/source/libs/cairo/cairo-src/src/cairo-pdf-surface.c +++ b/Build/source/libs/cairo/cairo-src/src/cairo-pdf-surface.c @@ -39,7 +39,7 @@ * Adrian Johnson <ajohnson@redneon.com> */ -#define _BSD_SOURCE /* for snprintf() */ +#define _DEFAULT_SOURCE /* for snprintf() */ #include "cairoint.h" #include "cairo-pdf.h" diff --git a/Build/source/libs/cairo/cairo-src/src/cairo-png.c b/Build/source/libs/cairo/cairo-src/src/cairo-png.c index 068617d588d..e64b14a5fc0 100644 --- a/Build/source/libs/cairo/cairo-src/src/cairo-png.c +++ b/Build/source/libs/cairo/cairo-src/src/cairo-png.c @@ -158,6 +158,14 @@ png_simple_warning_callback (png_structp png, */ } +static int +png_setjmp (png_struct *png) +{ +#ifdef PNG_SETJMP_SUPPORTED + return setjmp (png_jmpbuf (png)); +#endif + return 0; +} /* 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. */ @@ -229,10 +237,8 @@ write_png (cairo_surface_t *surface, goto BAIL4; } -#ifdef PNG_SETJMP_SUPPORTED - if (setjmp (png_jmpbuf (png))) + if (png_setjmp (png)) goto BAIL4; -#endif png_set_write_fn (png, closure, write_func, png_simple_output_flush_fn); @@ -571,12 +577,11 @@ read_png (struct png_read_closure_t *png_closure) png_set_read_fn (png, png_closure, stream_read_func); status = CAIRO_STATUS_SUCCESS; -#ifdef PNG_SETJMP_SUPPORTED - if (setjmp (png_jmpbuf (png))) { + + if (png_setjmp (png)) { surface = _cairo_surface_create_in_error (status); goto BAIL; } -#endif png_read_info (png, info); diff --git a/Build/source/libs/cairo/cairo-src/src/cairo-ps-surface.c b/Build/source/libs/cairo/cairo-src/src/cairo-ps-surface.c index fbec9f2915b..3b66b275d82 100644 --- a/Build/source/libs/cairo/cairo-src/src/cairo-ps-surface.c +++ b/Build/source/libs/cairo/cairo-src/src/cairo-ps-surface.c @@ -53,7 +53,7 @@ * 2. Using gs to do PS -> PDF and PDF -> PS will always work well. */ -#define _BSD_SOURCE /* for ctime_r(), snprintf(), strdup() */ +#define _DEFAULT_SOURCE /* for ctime_r(), snprintf(), strdup() */ #include "cairoint.h" #include "cairo-ps.h" diff --git a/Build/source/libs/cairo/cairo-src/src/cairo-scaled-font-subsets.c b/Build/source/libs/cairo/cairo-src/src/cairo-scaled-font-subsets.c index bf05fbd55d4..a239ec9b33e 100644 --- a/Build/source/libs/cairo/cairo-src/src/cairo-scaled-font-subsets.c +++ b/Build/source/libs/cairo/cairo-src/src/cairo-scaled-font-subsets.c @@ -40,7 +40,7 @@ * Adrian Johnson <ajohnson@redneon.com> */ -#define _BSD_SOURCE /* for snprintf(), strdup() */ +#define _DEFAULT_SOURCE /* for snprintf(), strdup() */ #include "cairoint.h" #include "cairo-error-private.h" 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 a22b36eef19..53a370d3acc 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 @@ -2907,6 +2907,7 @@ _cairo_scaled_font_free_last_glyph (cairo_scaled_font_t *scaled_font, { cairo_scaled_glyph_page_t *page; + assert (scaled_font->cache_frozen); assert (! cairo_list_is_empty (&scaled_font->glyph_pages)); page = cairo_list_last_entry (&scaled_font->glyph_pages, cairo_scaled_glyph_page_t, @@ -2916,6 +2917,9 @@ _cairo_scaled_font_free_last_glyph (cairo_scaled_font_t *scaled_font, _cairo_scaled_glyph_fini (scaled_font, scaled_glyph); if (--page->num_glyphs == 0) { + _cairo_scaled_font_thaw_cache (scaled_font); + CAIRO_MUTEX_LOCK (scaled_font->mutex); + CAIRO_MUTEX_LOCK (_cairo_scaled_glyph_page_cache_mutex); /* Temporarily disconnect callback to avoid recursive locking */ cairo_scaled_glyph_page_cache.entry_destroy = NULL; @@ -2924,6 +2928,9 @@ _cairo_scaled_font_free_last_glyph (cairo_scaled_font_t *scaled_font, _cairo_scaled_glyph_page_destroy (scaled_font, page); cairo_scaled_glyph_page_cache.entry_destroy = _cairo_scaled_glyph_page_pluck; CAIRO_MUTEX_UNLOCK (_cairo_scaled_glyph_page_cache_mutex); + + CAIRO_MUTEX_UNLOCK (scaled_font->mutex); + _cairo_scaled_font_freeze_cache (scaled_font); } } diff --git a/Build/source/libs/cairo/cairo-src/src/cairo-svg-surface.c b/Build/source/libs/cairo/cairo-src/src/cairo-svg-surface.c index 372ef45b86e..d9f4b92652e 100644 --- a/Build/source/libs/cairo/cairo-src/src/cairo-svg-surface.c +++ b/Build/source/libs/cairo/cairo-src/src/cairo-svg-surface.c @@ -39,7 +39,7 @@ * Carl Worth <cworth@cworth.org> */ -#define _BSD_SOURCE /* for snprintf() */ +#define _DEFAULT_SOURCE /* for snprintf() */ #include "cairoint.h" #include "cairo-svg.h" diff --git a/Build/source/libs/cairo/cairo-src/src/cairo-toy-font-face.c b/Build/source/libs/cairo/cairo-src/src/cairo-toy-font-face.c index 4fe94ab0919..516f391953f 100644 --- a/Build/source/libs/cairo/cairo-src/src/cairo-toy-font-face.c +++ b/Build/source/libs/cairo/cairo-src/src/cairo-toy-font-face.c @@ -39,7 +39,7 @@ * Behdad Esfahbod <behdad@behdad.org> */ -#define _BSD_SOURCE /* for strdup() */ +#define _DEFAULT_SOURCE /* for strdup() */ #include "cairoint.h" #include "cairo-error-private.h" 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 e3449a0d13b..b650ebe8678 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 @@ -40,7 +40,7 @@ * http://www.microsoft.com/typography/specs/default.htm */ -#define _BSD_SOURCE /* for snprintf(), strdup() */ +#define _DEFAULT_SOURCE /* for snprintf(), strdup() */ #include "cairoint.h" #include "cairo-array-private.h" @@ -202,13 +202,17 @@ _cairo_truetype_font_create (cairo_scaled_font_subset_t *scaled_font_subset, if (unlikely (status)) goto fail1; - font->glyphs = calloc (font->num_glyphs_in_face + 1, sizeof (subset_glyph_t)); + /* Add 2: +1 case font does not contain .notdef, and +1 because an extra + * entry is required to contain the end location of the last glyph. + */ + font->glyphs = calloc (font->num_glyphs_in_face + 2, sizeof (subset_glyph_t)); if (unlikely (font->glyphs == NULL)) { status = _cairo_error (CAIRO_STATUS_NO_MEMORY); goto fail1; } - font->parent_to_subset = calloc (font->num_glyphs_in_face, sizeof (int)); + /* Add 1 in case font does not contain .notdef */ + font->parent_to_subset = calloc (font->num_glyphs_in_face + 1, sizeof (int)); if (unlikely (font->parent_to_subset == NULL)) { status = _cairo_error (CAIRO_STATUS_NO_MEMORY); goto fail2; @@ -247,7 +251,8 @@ _cairo_truetype_font_create (cairo_scaled_font_subset_t *scaled_font_subset, scaled_font_subset->subset_id); } - font->base.widths = calloc (font->num_glyphs_in_face, sizeof (int)); + /* Add 1 in case font does not contain .notdef */ + font->base.widths = calloc (font->num_glyphs_in_face + 1, sizeof (int)); if (unlikely (font->base.widths == NULL)) { status = _cairo_error (CAIRO_STATUS_NO_MEMORY); goto fail4; @@ -1420,6 +1425,12 @@ cleanup: return status; } +/* + * Sanity check on font name length as some broken fonts may return very long + * strings of garbage. 127 is maximum length of a PS name. + */ +#define MAX_FONT_NAME_LENGTH 127 + static cairo_status_t find_name (tt_name_t *name, int name_id, int platform, int encoding, int language, char **str_out) { @@ -1438,11 +1449,17 @@ find_name (tt_name_t *name, int name_id, int platform, int encoding, int languag be16_to_cpu (record->encoding) == encoding && (language == -1 || be16_to_cpu (record->language) == language)) { - str = malloc (be16_to_cpu (record->length) + 1); + len = be16_to_cpu (record->length); + if (platform == 3 && len > MAX_FONT_NAME_LENGTH*2) /* UTF-16 name */ + break; + + if (len > MAX_FONT_NAME_LENGTH) + break; + + str = malloc (len + 1); if (str == NULL) return _cairo_error (CAIRO_STATUS_NO_MEMORY); - len = be16_to_cpu (record->length); memcpy (str, ((char*)name) + be16_to_cpu (name->strings_offset) + be16_to_cpu (record->offset), len); diff --git a/Build/source/libs/cairo/cairo-src/src/cairo-type1-fallback.c b/Build/source/libs/cairo/cairo-src/src/cairo-type1-fallback.c index 4a657413e48..c8e7e908bb6 100644 --- a/Build/source/libs/cairo/cairo-src/src/cairo-type1-fallback.c +++ b/Build/source/libs/cairo/cairo-src/src/cairo-type1-fallback.c @@ -33,7 +33,7 @@ * Adrian Johnson <ajohnson@redneon.com> */ -#define _BSD_SOURCE /* for snprintf(), strdup() */ +#define _DEFAULT_SOURCE /* for snprintf(), strdup() */ #include "cairoint.h" #include "cairo-array-private.h" diff --git a/Build/source/libs/cairo/cairo-src/src/cairo-type1-subset.c b/Build/source/libs/cairo/cairo-src/src/cairo-type1-subset.c index b15663509d3..feac2836f00 100644 --- a/Build/source/libs/cairo/cairo-src/src/cairo-type1-subset.c +++ b/Build/source/libs/cairo/cairo-src/src/cairo-type1-subset.c @@ -40,7 +40,7 @@ */ -#define _BSD_SOURCE /* for snprintf(), strdup() */ +#define _DEFAULT_SOURCE /* for snprintf(), strdup() */ #include "cairoint.h" #include "cairo-array-private.h" diff --git a/Build/source/libs/cairo/configure b/Build/source/libs/cairo/configure index 6333b0dcf91..df02aae03cd 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.10. +# Generated by GNU Autoconf 2.69 for cairo (TeX Live) 1.14.12. # # Report bugs to <tex-k@tug.org>. # @@ -580,8 +580,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='cairo (TeX Live)' PACKAGE_TARNAME='cairo--tex-live-' -PACKAGE_VERSION='1.14.10' -PACKAGE_STRING='cairo (TeX Live) 1.14.10' +PACKAGE_VERSION='1.14.12' +PACKAGE_STRING='cairo (TeX Live) 1.14.12' 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.10 to adapt to many kinds of systems. +\`configure' configures cairo (TeX Live) 1.14.12 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.10:";; + short | recursive ) echo "Configuration of cairo (TeX Live) 1.14.12:";; 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.10 +cairo (TeX Live) configure 1.14.12 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.10, which was +It was created by cairo (TeX Live) $as_me 1.14.12, 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.10' + VERSION='1.14.12' cat >>confdefs.h <<_ACEOF @@ -7274,7 +7274,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.10, which was +This file was extended by cairo (TeX Live) $as_me 1.14.12, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -7340,7 +7340,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.10 +cairo (TeX Live) config.status 1.14.12 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 5d0b041f6be..07c577c5867 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.10]) +m4_define([cairo_version], [1.14.12]) |