summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'x11-libs/pango/files')
-rw-r--r--x11-libs/pango/files/pango-1.2.5-lib64.patch30
-rw-r--r--x11-libs/pango/files/pango-1.26.0-introspection-automagic.patch214
-rw-r--r--x11-libs/pango/files/pango-1.28.3-heap-corruption.patch50
-rw-r--r--x11-libs/pango/files/pango-1.28.3-malloc-failure.patch186
4 files changed, 236 insertions, 244 deletions
diff --git a/x11-libs/pango/files/pango-1.2.5-lib64.patch b/x11-libs/pango/files/pango-1.2.5-lib64.patch
deleted file mode 100644
index c709c270eae2..000000000000
--- a/x11-libs/pango/files/pango-1.2.5-lib64.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-#--- pango-1.2.5/pango/Makefile.am.lib64 2003-08-25 10:12:45.000000000 -0400
-#+++ pango-1.2.5/pango/Makefile.am 2003-12-08 18:43:51.000000000 -0500
-#@@ -16,6 +16,7 @@
-# -DPANGO_ENABLE_BACKEND \
-# -DPANGO_ENABLE_ENGINE \
-# -DSYSCONFDIR=\"$(sysconfdir)\" \
-#+ -DHOST=\"$(host_triplet)\" \
-# -DLIBDIR=\"$(libdir)\" \
-# -DMODULE_VERSION=\"$(PANGO_MODULE_VERSION)\" \
-# -DG_DISABLE_DEPRECATED \
---- pango-1.2.5/pango/modules.c.lib64 2002-12-06 19:54:27.000000000 -0500
-+++ pango-1.2.5/pango/modules.c 2003-12-08 18:43:51.000000000 -0500
-@@ -353,6 +353,7 @@
-
- if (!file_str)
- file_str = g_build_filename (pango_get_sysconf_subdirectory (),
-+ HOST,
- "pango.modules",
- NULL);
-
---- pango-1.2.5/pango/Makefile.in.lib64 2003-12-09 10:48:24.000000000 -0500
-+++ pango-1.2.5/pango/Makefile.in 2003-12-09 10:48:32.000000000 -0500
-@@ -135,6 +135,7 @@
- -DPANGO_ENABLE_BACKEND \
- -DPANGO_ENABLE_ENGINE \
- -DSYSCONFDIR=\"$(sysconfdir)\" \
-+ -DHOST=\"$(host_triplet)\" \
- -DLIBDIR=\"$(libdir)\" \
- -DMODULE_VERSION=\"$(PANGO_MODULE_VERSION)\" \
- -DG_DISABLE_DEPRECATED \
diff --git a/x11-libs/pango/files/pango-1.26.0-introspection-automagic.patch b/x11-libs/pango/files/pango-1.26.0-introspection-automagic.patch
deleted file mode 100644
index b699b176c094..000000000000
--- a/x11-libs/pango/files/pango-1.26.0-introspection-automagic.patch
+++ /dev/null
@@ -1,214 +0,0 @@
-Use the introspection.m4 macro for checking for introspection. Fixes automagic,
-and keeps variable name consistency across modules.
-
----
---- configure.in
-+++ configure.in
-@@ -58,6 +58,7 @@
- AM_INIT_AUTOMAKE(1.9 gnits dist-bzip2 no-dist-gzip -Wno-portability)
- m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
- AM_CONFIG_HEADER([config.h])
-+AC_CONFIG_MACRO_DIR([m4])
-
-
- PANGO_VERSION_MAJOR=pango_version_major()
-@@ -493,27 +494,7 @@
- #
- # Checks for GObject Introspection
- #
--have_introspection=false
--PKG_CHECK_MODULES(INTROSPECTION, gobject-introspection-1.0 >= 0.6.4, have_introspection=true, have_introspection=false)
--AM_CONDITIONAL(HAVE_INTROSPECTION, $have_introspection)
--
--G_IR_SCANNER=
--G_IR_COMPILER=
--G_IR_GENERATE=
--GIRDIR=
--TYPELIBDIR=
--if $have_introspection; then
-- G_IR_SCANNER=`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0`
-- G_IR_COMPILER=`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0`
-- G_IR_GENERATE=`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0`
-- GIRDIR=`$PKG_CONFIG --variable=girdir gobject-introspection-1.0`
-- TYPELIBDIR="$($PKG_CONFIG --variable=typelibdir gobject-introspection-1.0)"
--fi
--AC_SUBST(G_IR_SCANNER)
--AC_SUBST(G_IR_COMPILER)
--AC_SUBST(G_IR_GENERATE)
--AC_SUBST(GIRDIR)
--AC_SUBST(TYPELIBDIR)
-+GOBJECT_INTROSPECTION_CHECK(0.6.4)
-
- #
- # Modules to build
---- m4/introspection.m4
-+++ m4/introspection.m4
-@@ -0,0 +1,92 @@
-+dnl -*- mode: autoconf -*-
-+dnl Copyright 2009 Johan Dahlin
-+dnl
-+dnl This file is free software; the author(s) gives unlimited
-+dnl permission to copy and/or distribute it, with or without
-+dnl modifications, as long as this notice is preserved.
-+dnl
-+
-+# serial 1
-+
-+m4_define([_GOBJECT_INTROSPECTION_CHECK_INTERNAL],
-+[
-+ AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first
-+ AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first
-+ AC_BEFORE([LT_INIT],[$0])dnl setup libtool first
-+
-+ dnl enable/disable introspection
-+ m4_if([$2], [require],
-+ [dnl
-+ enable_introspection=yes
-+ ],[dnl
-+ AC_ARG_ENABLE(introspection,
-+ AS_HELP_STRING([--enable-introspection[=@<:@no/auto/yes@:>@]],
-+ [Enable introspection for this build]),,
-+ [enable_introspection=auto])
-+ ])dnl
-+
-+ AC_MSG_CHECKING([for gobject-introspection])
-+
-+ dnl presence/version checking
-+ AS_CASE([$enable_introspection],
-+ [no], [dnl
-+ found_introspection="no (disabled, use --enable-introspection to enable)"
-+ ],dnl
-+ [yes],[dnl
-+ PKG_CHECK_EXISTS([gobject-introspection-1.0],,
-+ AC_MSG_ERROR([gobject-introspection-1.0 is not installed]))
-+ PKG_CHECK_EXISTS([gobject-introspection-1.0 >= $1],
-+ found_introspection=yes,
-+ AC_MSG_ERROR([You need to have gobject-introspection >= $1 installed to build AC_PACKAGE_NAME]))
-+ ],dnl
-+ [auto],[dnl
-+ PKG_CHECK_EXISTS([gobject-introspection-1.0 >= $1], found_introspection=yes, found_introspection=no)
-+ ],dnl
-+ [dnl
-+ AC_MSG_ERROR([invalid argument passed to --enable-introspection, should be one of @<:@no/auto/yes@:>@])
-+ ])dnl
-+
-+ AC_MSG_RESULT([$found_introspection])
-+
-+ INTROSPECTION_SCANNER=
-+ INTROSPECTION_COMPILER=
-+ INTROSPECTION_GENERATE=
-+ INTROSPECTION_GIRDIR=
-+ INTROSPECTION_TYPELIBDIR=
-+ if test "x$found_introspection" = "xyes"; then
-+ INTROSPECTION_SCANNER=`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0`
-+ INTROSPECTION_COMPILER=`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0`
-+ INTROSPECTION_GENERATE=`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0`
-+ INTROSPECTION_GIRDIR=`$PKG_CONFIG --variable=girdir gobject-introspection-1.0`
-+ INTROSPECTION_TYPELIBDIR="$($PKG_CONFIG --variable=typelibdir gobject-introspection-1.0)"
-+ INTROSPECTION_CFLAGS=`$PKG_CONFIG --cflags gobject-introspection-1.0`
-+ INTROSPECTION_LIBS=`$PKG_CONFIG --libs gobject-introspection-1.0`
-+ fi
-+ AC_SUBST(INTROSPECTION_SCANNER)
-+ AC_SUBST(INTROSPECTION_COMPILER)
-+ AC_SUBST(INTROSPECTION_GENERATE)
-+ AC_SUBST(INTROSPECTION_GIRDIR)
-+ AC_SUBST(INTROSPECTION_TYPELIBDIR)
-+ AC_SUBST(INTROSPECTION_CFLAGS)
-+ AC_SUBST(INTROSPECTION_LIBS)
-+
-+ AM_CONDITIONAL(HAVE_INTROSPECTION, test "x$found_introspection" = "xyes")
-+])
-+
-+
-+dnl Usage:
-+dnl GOBJECT_INTROSPECTION_CHECK([minimum-g-i-version])
-+
-+AC_DEFUN([GOBJECT_INTROSPECTION_CHECK],
-+[
-+ _GOBJECT_INTROSPECTION_CHECK_INTERNAL([$1])
-+])
-+
-+dnl Usage:
-+dnl GOBJECT_INTROSPECTION_REQUIRE([minimum-g-i-version])
-+
-+
-+AC_DEFUN([GOBJECT_INTROSPECTION_REQUIRE],
-+[
-+ _GOBJECT_INTROSPECTION_CHECK_INTERNAL([$1], [require])
-+])
---- Makefile.am
-+++ Makefile.am
-@@ -2,6 +2,8 @@
-
- SUBDIRS= pango modules pango-view examples docs tools tests
-
-+ACLOCAL_AMFLAGS = -I m4 -I .
-+
- EXTRA_DIST = \
- autogen.sh \
- pango.pc.in \
---- pango/Makefile.am
-+++ pango/Makefile.am
-@@ -163,8 +163,8 @@
- Pango-1.0.gir: $(libpango_1_0_la_SOURCES)
- Pango-1.0.gir: $(pango_headers)
- Pango-1.0.gir: libpango-1.0.la
--Pango-1.0.gir: $(G_IR_SCANNER) Makefile
-- $(AM_V_GEN) $(G_IR_SCANNER) -v --namespace Pango --nsversion=1.0 \
-+Pango-1.0.gir: $(INTROSPECTION_SCANNER) Makefile
-+ $(AM_V_GEN) $(INTROSPECTION_SCANNER) -v --namespace Pango --nsversion=1.0 \
- --add-include-path=$(srcdir) --add-include-path=. \
- --include=GObject-2.0 \
- --include=cairo-1.0 \
-@@ -278,8 +278,8 @@
- PangoFT2-1.0.gir: $(pangoft2_headers)
- PangoFT2-1.0.gir: $(libpangoft2_1_0_la_SOURCES)
- PangoFT2-1.0.gir: libpangoft2-1.0.la
--PangoFT2-1.0.gir: Pango-1.0.gir $(G_IR_SCANNER) Makefile
-- $(AM_V_GEN) $(G_IR_SCANNER) -v --namespace PangoFT2 --nsversion=1.0 \
-+PangoFT2-1.0.gir: Pango-1.0.gir $(INTROSPECTION_SCANNER) Makefile
-+ $(AM_V_GEN) $(INTROSPECTION_SCANNER) -v --namespace PangoFT2 --nsversion=1.0 \
- --add-include-path=$(srcdir) --add-include-path=. \
- --include=GObject-2.0 \
- --include=Pango-1.0 \
-@@ -335,8 +335,8 @@
- PangoXft-1.0.gir: $(pangoxft_headers)
- PangoXft-1.0.gir: $(libpangoxft_1_0_la_SOURCES)
- PangoXft-1.0.gir: libpangoxft-1.0.la
--PangoXft-1.0.gir: Pango-1.0.gir PangoFT2-1.0.gir $(G_IR_SCANNER) Makefile
-- $(AM_V_GEN) $(G_IR_SCANNER) -v --namespace PangoXft --nsversion=1.0 \
-+PangoXft-1.0.gir: Pango-1.0.gir PangoFT2-1.0.gir $(INTROSPECTION_SCANNER) Makefile
-+ $(AM_V_GEN) $(INTROSPECTION_SCANNER) -v --namespace PangoXft --nsversion=1.0 \
- --add-include-path=$(srcdir) --add-include-path=. \
- --include=GObject-2.0 \
- --include=xft-2.0 \
-@@ -424,8 +424,8 @@
- PangoCairo-1.0.gir: $(libpangocairo_1_0_la_SOURCES)
- PangoCairo-1.0.gir: $(pangocairo_headers)
- PangoCairo-1.0.gir: libpangocairo-1.0.la
--PangoCairo-1.0.gir: Pango-1.0.gir $(PANGOCAIRO_FONT_BACKEND_GI_MODULE).gir $(G_IR_SCANNER) Makefile
-- $(AM_V_GEN) $(G_IR_SCANNER) -v --namespace PangoCairo --nsversion=1.0 \
-+PangoCairo-1.0.gir: Pango-1.0.gir $(PANGOCAIRO_FONT_BACKEND_GI_MODULE).gir $(INTROSPECTION_SCANNER) Makefile
-+ $(AM_V_GEN) $(INTROSPECTION_SCANNER) -v --namespace PangoCairo --nsversion=1.0 \
- --add-include-path=$(srcdir) --add-include-path=. \
- --include=GObject-2.0 \
- --include=cairo-1.0 \
-@@ -551,14 +551,14 @@
-
- if HAVE_INTROSPECTION
-
--girdir = $(GIRDIR)
-+girdir = $(INTROSPECTION_GIRDIR)
- gir_DATA = $(BUILT_GIRSOURCES)
-
--typelibsdir = $(TYPELIBDIR)
-+typelibsdir = $(INTROSPECTION_TYPELIBDIR)
- typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib)
-
--%.typelib: %.gir $(G_IR_COMPILER)
-- $(AM_V_GEN) LD_LIBRARY_PATH=$${LD_LIBRARY_PATH:+$$LD_LIBRARY_PATH:}. $(G_IR_COMPILER) --includedir=$(srcdir) --includedir=. $(G_IR_COMPILER_OPTS) $< -o $(builddir)/$(@F)
-+%.typelib: %.gir $(INTROSPECTION_COMPILER)
-+ $(AM_V_GEN) LD_LIBRARY_PATH=$${LD_LIBRARY_PATH:+$$LD_LIBRARY_PATH:}. $(INTROSPECTION_COMPILER) --includedir=$(srcdir) --includedir=. $(INTROSPECTION_COMPILER_OPTS) $< -o $(builddir)/$(@F)
-
- endif # HAVE_INTROSPECTION
-
diff --git a/x11-libs/pango/files/pango-1.28.3-heap-corruption.patch b/x11-libs/pango/files/pango-1.28.3-heap-corruption.patch
new file mode 100644
index 000000000000..692f69867eda
--- /dev/null
+++ b/x11-libs/pango/files/pango-1.28.3-heap-corruption.patch
@@ -0,0 +1,50 @@
+From 4e6248d76f55c6184f28afe614d7d76b6fa3d455 Mon Sep 17 00:00:00 2001
+From: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu, 17 Feb 2011 16:19:48 +0000
+Subject: Bug 639882 - Heap corruption in font parsing with FreeType2 backend
+
+---
+diff --git a/pango/pangoft2-render.c b/pango/pangoft2-render.c
+index bd3b7d4..42923f4 100644
+--- a/pango/pangoft2-render.c
++++ b/pango/pangoft2-render.c
+@@ -121,9 +121,14 @@ pango_ft2_font_render_box_glyph (int width,
+
+ box->bitmap.width = width;
+ box->bitmap.rows = height;
+- box->bitmap.pitch = height;
++ box->bitmap.pitch = width;
+
+- box->bitmap.buffer = g_malloc0 (box->bitmap.rows * box->bitmap.pitch);
++ box->bitmap.buffer = g_malloc0_n (box->bitmap.rows, box->bitmap.pitch);
++
++ if (G_UNLIKELY (!box->bitmap.buffer)) {
++ g_slice_free (PangoFT2RenderedGlyph, box);
++ return NULL;
++ }
+
+ /* draw the box */
+ for (j = 0; j < line_width; j++)
+@@ -226,6 +231,11 @@ pango_ft2_font_render_glyph (PangoFont *font,
+ rendered->bitmap_left = face->glyph->bitmap_left;
+ rendered->bitmap_top = face->glyph->bitmap_top;
+
++ if (G_UNLIKELY (!rendered->bitmap.buffer)) {
++ g_slice_free (PangoFT2RenderedGlyph, rendered);
++ return NULL;
++ }
++
+ return rendered;
+ }
+ else
+@@ -276,6 +286,8 @@ pango_ft2_renderer_draw_glyph (PangoRenderer *renderer,
+ if (rendered_glyph == NULL)
+ {
+ rendered_glyph = pango_ft2_font_render_glyph (font, glyph);
++ if (rendered_glyph == NULL)
++ return;
+ add_glyph_to_cache = TRUE;
+ }
+
+--
+cgit v0.8.3.4
diff --git a/x11-libs/pango/files/pango-1.28.3-malloc-failure.patch b/x11-libs/pango/files/pango-1.28.3-malloc-failure.patch
new file mode 100644
index 000000000000..e82f8e6a4c7f
--- /dev/null
+++ b/x11-libs/pango/files/pango-1.28.3-malloc-failure.patch
@@ -0,0 +1,186 @@
+From 3104961bc0ffaf847d2a1e116e6de4fdc1cd8ada Mon Sep 17 00:00:00 2001
+From: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu, 2 Dec 2010 16:00:46 +1300
+Subject: [PATCH] Handle realloc failure in the buffer
+
+Ported from http://cgit.freedesktop.org/harfbuzz/commit/?id=a6a79df5fe2e
+by Karl Tomlinson <karlt+@karlt.net>
+---
+ pango/opentype/hb-buffer-private.h | 1 +
+ pango/opentype/hb-buffer.c | 70 +++++++++++++++++++++---------------
+ pango/opentype/hb-buffer.h | 2 +-
+ 3 files changed, 43 insertions(+), 30 deletions(-)
+
+diff --git a/pango/opentype/hb-buffer-private.h b/pango/opentype/hb-buffer-private.h
+index 45cdc4d..f194786 100644
+--- a/pango/opentype/hb-buffer-private.h
++++ b/pango/opentype/hb-buffer-private.h
+@@ -72,6 +72,7 @@ struct _hb_buffer_t {
+ unsigned int allocated;
+
+ hb_bool_t have_output; /* weather we have an output buffer going on */
++ hb_bool_t in_error; /* Allocation failed */
+ unsigned int in_length;
+ unsigned int out_length;
+ unsigned int in_pos;
+diff --git a/pango/opentype/hb-buffer.c b/pango/opentype/hb-buffer.c
+index 93b51e5..e9788ad 100644
+--- a/pango/opentype/hb-buffer.c
++++ b/pango/opentype/hb-buffer.c
+@@ -52,23 +52,21 @@ static hb_buffer_t _hb_buffer_nil = {
+ * in_string and out_string.
+ */
+
+-/* XXX err handling */
+-
+ /* Internal API */
+
+-static void
++static hb_bool_t
+ hb_buffer_ensure_separate (hb_buffer_t *buffer, unsigned int size)
+ {
+- hb_buffer_ensure (buffer, size);
++ if (HB_UNLIKELY (!hb_buffer_ensure (buffer, size))) return FALSE;
+ if (buffer->out_string == buffer->in_string)
+ {
+ assert (buffer->have_output);
+- if (!buffer->positions)
+- buffer->positions = calloc (buffer->allocated, sizeof (buffer->positions[0]));
+
+ buffer->out_string = (hb_internal_glyph_info_t *) buffer->positions;
+ memcpy (buffer->out_string, buffer->in_string, buffer->out_length * sizeof (buffer->out_string[0]));
+ }
++
++ return TRUE;
+ }
+
+ /* Public API */
+@@ -114,6 +112,7 @@ void
+ hb_buffer_clear (hb_buffer_t *buffer)
+ {
+ buffer->have_output = FALSE;
++ buffer->in_error = FALSE;
+ buffer->in_length = 0;
+ buffer->out_length = 0;
+ buffer->in_pos = 0;
+@@ -122,32 +121,42 @@ hb_buffer_clear (hb_buffer_t *buffer)
+ buffer->max_lig_id = 0;
+ }
+
+-void
++hb_bool_t
+ hb_buffer_ensure (hb_buffer_t *buffer, unsigned int size)
+ {
+- unsigned int new_allocated = buffer->allocated;
+-
+- if (size > new_allocated)
++ if (HB_UNLIKELY (size > buffer->allocated))
+ {
++ unsigned int new_allocated = buffer->allocated;
++ hb_internal_glyph_position_t *new_pos;
++ hb_internal_glyph_info_t *new_info;
++ hb_bool_t separate_out;
++
++ if (HB_UNLIKELY (buffer->in_error))
++ return FALSE;
++
++ separate_out = buffer->out_string != buffer->in_string;
++
+ while (size > new_allocated)
+ new_allocated += (new_allocated >> 1) + 8;
+
+- if (buffer->positions)
+- buffer->positions = realloc (buffer->positions, new_allocated * sizeof (buffer->positions[0]));
++ new_pos = (hb_internal_glyph_position_t *) realloc (buffer->positions, new_allocated * sizeof (buffer->positions[0]));
++ new_info = (hb_internal_glyph_info_t *) realloc (buffer->in_string, new_allocated * sizeof (buffer->in_string[0]));
+
+- if (buffer->out_string != buffer->in_string)
+- {
+- buffer->in_string = realloc (buffer->in_string, new_allocated * sizeof (buffer->in_string[0]));
+- buffer->out_string = (hb_internal_glyph_info_t *) buffer->positions;
+- }
+- else
+- {
+- buffer->in_string = realloc (buffer->in_string, new_allocated * sizeof (buffer->in_string[0]));
+- buffer->out_string = buffer->in_string;
+- }
++ if (HB_UNLIKELY (!new_pos || !new_info))
++ buffer->in_error = TRUE;
++
++ if (HB_LIKELY (new_pos))
++ buffer->positions = new_pos;
+
+- buffer->allocated = new_allocated;
++ if (HB_LIKELY (new_info))
++ buffer->in_string = new_info;
++
++ buffer->out_string = separate_out ? (hb_internal_glyph_info_t *) buffer->positions : buffer->in_string;
++ if (HB_LIKELY (!buffer->in_error))
++ buffer->allocated = new_allocated;
+ }
++
++ return HB_LIKELY (!buffer->in_error);
+ }
+
+ void
+@@ -158,7 +167,7 @@ hb_buffer_add_glyph (hb_buffer_t *buffer,
+ {
+ hb_internal_glyph_info_t *glyph;
+
+- hb_buffer_ensure (buffer, buffer->in_length + 1);
++ if (HB_UNLIKELY (!hb_buffer_ensure (buffer, buffer->in_length + 1))) return;
+
+ glyph = &buffer->in_string[buffer->in_length];
+ glyph->codepoint = codepoint;
+@@ -213,6 +222,8 @@ _hb_buffer_swap (hb_buffer_t *buffer)
+
+ assert (buffer->have_output);
+
++ if (HB_UNLIKELY (buffer->in_error)) return;
++
+ if (buffer->out_string != buffer->in_string)
+ {
+ hb_internal_glyph_info_t *tmp_string;
+@@ -265,7 +276,8 @@ _hb_buffer_add_output_glyphs (hb_buffer_t *buffer,
+ if (buffer->out_string != buffer->in_string ||
+ buffer->out_pos + num_out > buffer->in_pos + num_in)
+ {
+- hb_buffer_ensure_separate (buffer, buffer->out_pos + num_out);
++ if (HB_UNLIKELY (!hb_buffer_ensure_separate (buffer, buffer->out_pos + num_out)))
++ return;
+ }
+
+ mask = buffer->in_string[buffer->in_pos].mask;
+@@ -302,7 +314,7 @@ _hb_buffer_add_output_glyph (hb_buffer_t *buffer,
+
+ if (buffer->out_string != buffer->in_string)
+ {
+- hb_buffer_ensure (buffer, buffer->out_pos + 1);
++ if (HB_UNLIKELY (!hb_buffer_ensure (buffer, buffer->out_pos + 1))) return;
+ buffer->out_string[buffer->out_pos] = buffer->in_string[buffer->in_pos];
+ }
+ else if (buffer->out_pos != buffer->in_pos)
+@@ -332,7 +344,7 @@ _hb_buffer_next_glyph (hb_buffer_t *buffer)
+
+ if (buffer->out_string != buffer->in_string)
+ {
+- hb_buffer_ensure (buffer, buffer->out_pos + 1);
++ if (HB_UNLIKELY (!hb_buffer_ensure (buffer, buffer->out_pos + 1))) return;
+ buffer->out_string[buffer->out_pos] = buffer->in_string[buffer->in_pos];
+ }
+ else if (buffer->out_pos != buffer->in_pos)
+diff --git a/pango/opentype/hb-buffer.h b/pango/opentype/hb-buffer.h
+index b030ba9..aaf6694 100644
+--- a/pango/opentype/hb-buffer.h
++++ b/pango/opentype/hb-buffer.h
+@@ -94,7 +94,7 @@ hb_buffer_clear (hb_buffer_t *buffer);
+ void
+ hb_buffer_clear_positions (hb_buffer_t *buffer);
+
+-void
++hb_bool_t
+ hb_buffer_ensure (hb_buffer_t *buffer,
+ unsigned int size);
+
+--
+1.7.2.2