Hello community, here is the log from the commit of package harfbuzz for openSUSE:Factory checked in at 2013-01-20 14:39:30 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/harfbuzz (Old) and /work/SRC/openSUSE:Factory/.harfbuzz.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "harfbuzz", Maintainer is "" Changes: -------- --- /work/SRC/openSUSE:Factory/harfbuzz/harfbuzz.changes 2013-01-10 12:56:43.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.harfbuzz.new/harfbuzz.changes 2013-01-20 14:39:32.000000000 +0100 @@ -1,0 +2,12 @@ +Mon Jan 14 21:19:08 UTC 2013 - zai...@opensuse.org + +- Update to version 0.9.11: + + Fix GPOS mark attachment with null Anchor offsets. + + [Indic] Fix old-spec reordering of viramas if sequence ends in + one. + + Fix multi-threaded shaper data creation crash. + + Add atomic ops for Solaris. + + API changes: Rename hb_buffer_clear() to + hb_buffer_clear_contents(). + +------------------------------------------------------------------- Old: ---- harfbuzz-0.9.10.tar.bz2 New: ---- harfbuzz-0.9.11.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ harfbuzz.spec ++++++ --- /var/tmp/diff_new_pack.i80tou/_old 2013-01-20 14:39:33.000000000 +0100 +++ /var/tmp/diff_new_pack.i80tou/_new 2013-01-20 14:39:33.000000000 +0100 @@ -17,7 +17,7 @@ Name: harfbuzz -Version: 0.9.10 +Version: 0.9.11 Release: 0 # FIXME: graphite2 is not packaged / http://projects.palaso.org/projects/graphitedev Summary: An OpenType text shaping engine ++++++ harfbuzz-0.9.10.tar.bz2 -> harfbuzz-0.9.11.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/harfbuzz-0.9.10/NEWS new/harfbuzz-0.9.11/NEWS --- old/harfbuzz-0.9.10/NEWS 2013-01-03 07:14:19.000000000 +0100 +++ new/harfbuzz-0.9.11/NEWS 2013-01-10 16:05:05.000000000 +0100 @@ -1,3 +1,17 @@ +Overview of changes leading to 0.9.11 +Thursday, January 10, 2013 +===================================== + +- Build fixes. +- Fix GPOS mark attachment with null Anchor offsets. +- [Indic] Fix old-spec reordering of viramas if sequence ends in one. +- Fix multi-threaded shaper data creation crash. +- Add atomic ops for Solaris. + +API changes: +- Rename hb_buffer_clear() to hb_buffer_clear_contents(). + + Overview of changes leading to 0.9.10 Thursday, January 3, 2013 ===================================== diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/harfbuzz-0.9.10/config.h.in new/harfbuzz-0.9.11/config.h.in --- old/harfbuzz-0.9.10/config.h.in 2013-01-03 07:09:01.000000000 +0100 +++ new/harfbuzz-0.9.11/config.h.in 2013-01-10 16:05:29.000000000 +0100 @@ -78,9 +78,12 @@ /* Define to 1 if you have the <sched.h> header file. */ #undef HAVE_SCHED_H -/* Define to 1 if you have the `sched_yield' function. */ +/* Have sched_yield */ #undef HAVE_SCHED_YIELD +/* Have Solaris __machine_*_barrier and atomic_* operations */ +#undef HAVE_SOLARIS_ATOMIC_OPS + /* Define to 1 if you have the <stdint.h> header file. */ #undef HAVE_STDINT_H diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/harfbuzz-0.9.10/configure new/harfbuzz-0.9.11/configure --- old/harfbuzz-0.9.10/configure 2013-01-03 07:08:56.000000000 +0100 +++ new/harfbuzz-0.9.11/configure 2013-01-10 16:05:21.000000000 +0100 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.68 for HarfBuzz 0.9.10. +# Generated by GNU Autoconf 2.68 for HarfBuzz 0.9.11. # # Report bugs to <http://bugs.freedesktop.org/enter_bug.cgi?product=harfbuzz>. # @@ -571,8 +571,8 @@ # Identity of this package. PACKAGE_NAME='HarfBuzz' PACKAGE_TARNAME='harfbuzz' -PACKAGE_VERSION='0.9.10' -PACKAGE_STRING='HarfBuzz 0.9.10' +PACKAGE_VERSION='0.9.11' +PACKAGE_STRING='HarfBuzz 0.9.11' PACKAGE_BUGREPORT='http://bugs.freedesktop.org/enter_bug.cgi?product=harfbuzz' PACKAGE_URL='http://harfbuzz.org/' @@ -1388,7 +1388,7 @@ # 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 HarfBuzz 0.9.10 to adapt to many kinds of systems. +\`configure' configures HarfBuzz 0.9.11 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1458,7 +1458,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of HarfBuzz 0.9.10:";; + short | recursive ) echo "Configuration of HarfBuzz 0.9.11:";; esac cat <<\_ACEOF @@ -1596,7 +1596,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -HarfBuzz configure 0.9.10 +HarfBuzz configure 0.9.11 generated by GNU Autoconf 2.68 Copyright (C) 2010 Free Software Foundation, Inc. @@ -2140,7 +2140,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by HarfBuzz $as_me 0.9.10, which was +It was created by HarfBuzz $as_me 0.9.11, which was generated by GNU Autoconf 2.68. Invocation command line was $ $0 $@ @@ -2961,7 +2961,7 @@ # Define the identity of the package. PACKAGE='harfbuzz' - VERSION='0.9.10' + VERSION='0.9.11' # Some tools Automake needs. @@ -16131,8 +16131,8 @@ HB_VERSION_MAJOR=0 HB_VERSION_MINOR=9 -HB_VERSION_MICRO=10 -HB_VERSION=0.9.10 +HB_VERSION_MICRO=11 +HB_VERSION=0.9.11 @@ -16143,12 +16143,12 @@ -HB_LIBTOOL_VERSION_INFO=910:0:910 +HB_LIBTOOL_VERSION_INFO=911:0:911 # Functions and headers -for ac_func in atexit mprotect sysconf getpagesize sched_yield mmap _setmode isatty +for ac_func in atexit mprotect sysconf getpagesize mmap _setmode isatty do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" @@ -16160,7 +16160,7 @@ fi done -for ac_header in unistd.h sys/mman.h sched.h io.h +for ac_header in unistd.h sys/mman.h io.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" @@ -17184,6 +17184,7 @@ have_icu=true fi if $have_icu; then + CXXFLAGS="$CXXFLAGS `$PKG_CONFIG --variable=CXXFLAGS icu-uc`" $as_echo "#define HAVE_ICU 1" >>confdefs.h @@ -17588,6 +17589,121 @@ fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Solaris atomic operations" >&5 +$as_echo_n "checking for Solaris atomic operations... " >&6; } +if ${hb_cv_have_solaris_atomic_ops+:} false; then : + $as_echo_n "(cached) " >&6 +else + + hb_cv_have_solaris_atomic_ops=false + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include <atomic.h> + /* This requires Solaris Studio 12.2 or newer: */ + #include <mbarrier.h> + void memory_barrier (void) { __machine_rw_barrier (); } + int atomic_add (volatile unsigned *i) { return atomic_add_int_nv (i, 1); } + void *atomic_ptr_cmpxchg (volatile void **target, void *cmp, void *newval) { return atomic_cas_ptr (target, cmp, newval); } + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + hb_cv_have_solaris_atomic_ops=true + +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hb_cv_have_solaris_atomic_ops" >&5 +$as_echo "$hb_cv_have_solaris_atomic_ops" >&6; } +if $hb_cv_have_solaris_atomic_ops; then + +$as_echo "#define HAVE_SOLARIS_ATOMIC_OPS 1" >>confdefs.h + +fi + +if test "$os_win32" = no && ! $have_pthread; then + for ac_header in sched.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "sched.h" "ac_cv_header_sched_h" "$ac_includes_default" +if test "x$ac_cv_header_sched_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_SCHED_H 1 +_ACEOF + +fi + +done + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing sched_yield" >&5 +$as_echo_n "checking for library containing sched_yield... " >&6; } +if ${ac_cv_search_sched_yield+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char sched_yield (); +int +main () +{ +return sched_yield (); + ; + return 0; +} +_ACEOF +for ac_lib in '' rt; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_sched_yield=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if ${ac_cv_search_sched_yield+:} false; then : + break +fi +done +if ${ac_cv_search_sched_yield+:} false; then : + +else + ac_cv_search_sched_yield=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_sched_yield" >&5 +$as_echo "$ac_cv_search_sched_yield" >&6; } +ac_res=$ac_cv_search_sched_yield +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +$as_echo "#define HAVE_SCHED_YIELD 1" >>confdefs.h + +fi + +fi + + ac_config_files="$ac_config_files Makefile harfbuzz.pc src/Makefile src/hb-version.h src/hb-icu-le/Makefile src/hb-old/Makefile src/hb-ucdn/Makefile util/Makefile test/Makefile test/api/Makefile test/shaping/Makefile" @@ -18197,7 +18313,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by HarfBuzz $as_me 0.9.10, which was +This file was extended by HarfBuzz $as_me 0.9.11, which was generated by GNU Autoconf 2.68. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -18264,7 +18380,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -HarfBuzz config.status 0.9.10 +HarfBuzz config.status 0.9.11 configured by $0, generated by GNU Autoconf 2.68, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/harfbuzz-0.9.10/configure.ac new/harfbuzz-0.9.11/configure.ac --- old/harfbuzz-0.9.10/configure.ac 2013-01-03 07:08:51.000000000 +0100 +++ new/harfbuzz-0.9.11/configure.ac 2013-01-10 16:05:14.000000000 +0100 @@ -1,6 +1,6 @@ AC_PREREQ([2.64]) AC_INIT([HarfBuzz], - [0.9.10], + [0.9.11], [http://bugs.freedesktop.org/enter_bug.cgi?product=harfbuzz], [harfbuzz], [http://harfbuzz.org/]) @@ -55,8 +55,8 @@ dnl GTK_DOC_CHECK([1.15],[--flavour no-tmpl]) # Functions and headers -AC_CHECK_FUNCS(atexit mprotect sysconf getpagesize sched_yield mmap _setmode isatty) -AC_CHECK_HEADERS(unistd.h sys/mman.h sched.h io.h) +AC_CHECK_FUNCS(atexit mprotect sysconf getpagesize mmap _setmode isatty) +AC_CHECK_HEADERS(unistd.h sys/mman.h io.h) # Compiler flags AC_CANONICAL_HOST @@ -171,6 +171,7 @@ PKG_CHECK_MODULES(ICU, icu-uc, have_icu=true, have_icu=false) if $have_icu; then + CXXFLAGS="$CXXFLAGS `$PKG_CONFIG --variable=CXXFLAGS icu-uc`" AC_DEFINE(HAVE_ICU, 1, [Have ICU library]) fi AM_CONDITIONAL(HAVE_ICU, $have_icu) @@ -259,6 +260,29 @@ fi dnl =========================================================================== + +AC_CACHE_CHECK([for Solaris atomic operations], hb_cv_have_solaris_atomic_ops, [ + hb_cv_have_solaris_atomic_ops=false + AC_TRY_LINK([ + #include <atomic.h> + /* This requires Solaris Studio 12.2 or newer: */ + #include <mbarrier.h> + void memory_barrier (void) { __machine_rw_barrier (); } + int atomic_add (volatile unsigned *i) { return atomic_add_int_nv (i, 1); } + void *atomic_ptr_cmpxchg (volatile void **target, void *cmp, void *newval) { return atomic_cas_ptr (target, cmp, newval); } + ], [], hb_cv_have_solaris_atomic_ops=true + ) +]) +if $hb_cv_have_solaris_atomic_ops; then + AC_DEFINE(HAVE_SOLARIS_ATOMIC_OPS, 1, [Have Solaris __machine_*_barrier and atomic_* operations]) +fi + +if test "$os_win32" = no && ! $have_pthread; then + AC_CHECK_HEADERS(sched.h) + AC_SEARCH_LIBS(sched_yield,rt,AC_DEFINE(HAVE_SCHED_YIELD, 1, [Have sched_yield])) +fi + +dnl =========================================================================== AC_CONFIG_FILES([ Makefile diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/harfbuzz-0.9.10/src/hb-atomic-private.hh new/harfbuzz-0.9.11/src/hb-atomic-private.hh --- old/harfbuzz-0.9.10/src/hb-atomic-private.hh 2013-01-03 00:41:16.000000000 +0100 +++ new/harfbuzz-0.9.11/src/hb-atomic-private.hh 2013-01-10 08:16:29.000000000 +0100 @@ -99,6 +99,18 @@ #define hb_atomic_ptr_cmpexch(P,O,N) __sync_bool_compare_and_swap ((P), (O), (N)) +#elif !defined(HB_NO_MT) && defined(HAVE_SOLARIS_ATOMIC_OPS) + +#include <atomic.h> +#include <mbarrier.h> + +typedef unsigned int fc_atomic_int_t; +#define fc_atomic_int_add(AI, V) ( ({__machine_rw_barrier ();}), atomic_add_int_nv (&(AI), (V)) - (V)) + +#define fc_atomic_ptr_get(P) ( ({__machine_rw_barrier ();}), (void *) *(P)) +#define fc_atomic_ptr_cmpexch(P,O,N) ( ({__machine_rw_barrier ();}), atomic_cas_ptr ((P), (O), (N)) == (void *) (O) ? FcTrue : FcFalse) + + #elif !defined(HB_NO_MT) #define HB_ATOMIC_INT_NIL 1 /* Warn that fallback implementation is in use. */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/harfbuzz-0.9.10/src/hb-buffer.cc new/harfbuzz-0.9.11/src/hb-buffer.cc --- old/harfbuzz-0.9.10/src/hb-buffer.cc 2012-12-30 00:39:10.000000000 +0100 +++ new/harfbuzz-0.9.11/src/hb-buffer.cc 2013-01-07 23:45:18.000000000 +0100 @@ -790,7 +790,7 @@ } void -hb_buffer_clear (hb_buffer_t *buffer) +hb_buffer_clear_contents (hb_buffer_t *buffer) { buffer->clear (); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/harfbuzz-0.9.10/src/hb-buffer.h new/harfbuzz-0.9.11/src/hb-buffer.h --- old/harfbuzz-0.9.10/src/hb-buffer.h 2012-11-23 21:30:42.000000000 +0100 +++ new/harfbuzz-0.9.11/src/hb-buffer.h 2013-01-07 23:45:05.000000000 +0100 @@ -193,7 +193,7 @@ /* Like reset, but does NOT clear unicode_funcs. */ void -hb_buffer_clear (hb_buffer_t *buffer); +hb_buffer_clear_contents (hb_buffer_t *buffer); /* Returns false if allocation failed */ hb_bool_t diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/harfbuzz-0.9.10/src/hb-open-type-private.hh new/harfbuzz-0.9.11/src/hb-open-type-private.hh --- old/harfbuzz-0.9.10/src/hb-open-type-private.hh 2012-12-18 00:37:13.000000000 +0100 +++ new/harfbuzz-0.9.11/src/hb-open-type-private.hh 2013-01-08 23:13:42.000000000 +0100 @@ -616,10 +616,20 @@ DEFINE_NULL_DATA (Index, "\xff\xff"); /* Offset to a table, same as uint16 (length = 16 bits), Null offset = 0x0000 */ -typedef USHORT Offset; +struct Offset : USHORT +{ + inline bool is_null (void) const { return 0 == *this; } + public: + DEFINE_SIZE_STATIC (2); +}; /* LongOffset to a table, same as uint32 (length = 32 bits), Null offset = 0x00000000 */ -typedef ULONG LongOffset; +struct LongOffset : ULONG +{ + inline bool is_null (void) const { return 0 == *this; } + public: + DEFINE_SIZE_STATIC (4); +}; /* CheckSum */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/harfbuzz-0.9.10/src/hb-ot-layout-gpos-table.hh new/harfbuzz-0.9.11/src/hb-ot-layout-gpos-table.hh --- old/harfbuzz-0.9.10/src/hb-ot-layout-gpos-table.hh 2012-12-04 23:06:16.000000000 +0100 +++ new/harfbuzz-0.9.11/src/hb-ot-layout-gpos-table.hh 2013-01-08 23:14:59.000000000 +0100 @@ -336,8 +336,10 @@ struct AnchorMatrix { - inline const Anchor& get_anchor (unsigned int row, unsigned int col, unsigned int cols) const { + inline const Anchor& get_anchor (unsigned int row, unsigned int col, unsigned int cols, bool *found) const { + *found = false; if (unlikely (row >= rows || col >= cols)) return Null(Anchor); + *found = !matrix[row * cols + col].is_null (); return this+matrix[row * cols + col]; } @@ -392,7 +394,11 @@ unsigned int mark_class = record.klass; const Anchor& mark_anchor = this + record.markAnchor; - const Anchor& glyph_anchor = anchors.get_anchor (glyph_index, mark_class, class_count); + bool found; + const Anchor& glyph_anchor = anchors.get_anchor (glyph_index, mark_class, class_count, &found); + /* If this subtable doesn't have an anchor for this base and this class, + * return false such that the subsequent subtables have a chance at it. */ + if (unlikely (!found)) return TRACE_RETURN (false); hb_position_t mark_x, mark_y, base_x, base_y; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/harfbuzz-0.9.10/src/hb-ot-layout-gsubgpos-private.hh new/harfbuzz-0.9.11/src/hb-ot-layout-gsubgpos-private.hh --- old/harfbuzz-0.9.10/src/hb-ot-layout-gsubgpos-private.hh 2013-01-03 06:36:11.000000000 +0100 +++ new/harfbuzz-0.9.11/src/hb-ot-layout-gsubgpos-private.hh 2013-01-04 08:25:08.000000000 +0100 @@ -62,7 +62,7 @@ template <typename T> inline return_t process (const T &obj) { obj.closure (this); return HB_VOID; } static return_t default_return_value (void) { return HB_VOID; } - bool stop_sublookup_iteration (const return_t r HB_UNUSED) const { return false; } + bool stop_sublookup_iteration (return_t r HB_UNUSED) const { return false; } return_t recurse (unsigned int lookup_index) { if (unlikely (nesting_level_left == 0 || !recurse_func)) @@ -111,7 +111,7 @@ template <typename T> inline return_t process (const T &obj) { return obj.would_apply (this); } static return_t default_return_value (void) { return false; } - bool stop_sublookup_iteration (const return_t r) const { return r; } + bool stop_sublookup_iteration (return_t r) const { return r; } hb_face_t *face; const hb_codepoint_t *glyphs; @@ -150,7 +150,7 @@ template <typename T> inline return_t process (const T &obj) { obj.collect_glyphs (this); return HB_VOID; } static return_t default_return_value (void) { return HB_VOID; } - bool stop_sublookup_iteration (const return_t r HB_UNUSED) const { return false; } + bool stop_sublookup_iteration (return_t r HB_UNUSED) const { return false; } return_t recurse (unsigned int lookup_index) { if (unlikely (nesting_level_left == 0 || !recurse_func)) @@ -243,7 +243,7 @@ template <typename T> inline return_t process (const T &obj) { return obj.apply (this); } static return_t default_return_value (void) { return false; } - bool stop_sublookup_iteration (const return_t r) const { return r; } + bool stop_sublookup_iteration (return_t r) const { return r; } return_t recurse (unsigned int lookup_index) { if (unlikely (nesting_level_left == 0 || !recurse_func)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/harfbuzz-0.9.10/src/hb-ot-shape-complex-indic.cc new/harfbuzz-0.9.11/src/hb-ot-shape-complex-indic.cc --- old/harfbuzz-0.9.10/src/hb-ot-shape-complex-indic.cc 2012-12-30 00:39:10.000000000 +0100 +++ new/harfbuzz-0.9.11/src/hb-ot-shape-complex-indic.cc 2013-01-09 01:08:21.000000000 +0100 @@ -644,15 +644,16 @@ info[start].indic_position() = POS_RA_TO_BECOME_REPH; /* For old-style Indic script tags, move the first post-base Halant after - * last consonant. */ + * last consonant. Only do this if there is *not* a Halant after last + * consonant. Otherwise it becomes messy. */ if (indic_plan->is_old_spec) { for (unsigned int i = base + 1; i < end; i++) if (info[i].indic_category() == OT_H) { unsigned int j; for (j = end - 1; j > i; j--) - if (is_consonant (info[j])) + if (is_consonant (info[j]) || info[j].indic_category() == OT_H) break; - if (j > i) { + if (info[j].indic_category() != OT_H && j > i) { /* Move Halant to after last consonant. */ hb_glyph_info_t t = info[i]; memmove (&info[i], &info[i + 1], (j - i) * sizeof (info[0])); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/harfbuzz-0.9.10/src/hb-shaper-private.hh new/harfbuzz-0.9.11/src/hb-shaper-private.hh --- old/harfbuzz-0.9.10/src/hb-shaper-private.hh 2012-11-23 21:30:42.000000000 +0100 +++ new/harfbuzz-0.9.11/src/hb-shaper-private.hh 2013-01-10 07:03:23.000000000 +0100 @@ -95,7 +95,10 @@ if (unlikely (!data)) \ data = (HB_SHAPER_DATA_TYPE (shaper, object) *) HB_SHAPER_DATA_INVALID; \ if (!hb_atomic_ptr_cmpexch (&HB_SHAPER_DATA (shaper, object), NULL, data)) { \ - HB_SHAPER_DATA_DESTROY_FUNC (shaper, object) (data); \ + if (data && \ + data != HB_SHAPER_DATA_INVALID && \ + data != HB_SHAPER_DATA_SUCCEEDED) \ + HB_SHAPER_DATA_DESTROY_FUNC (shaper, object) (data); \ goto retry; \ } \ } \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/harfbuzz-0.9.10/src/hb-version.h new/harfbuzz-0.9.11/src/hb-version.h --- old/harfbuzz-0.9.10/src/hb-version.h 2013-01-03 07:09:02.000000000 +0100 +++ new/harfbuzz-0.9.11/src/hb-version.h 2013-01-10 16:05:28.000000000 +0100 @@ -38,9 +38,9 @@ #define HB_VERSION_MAJOR 0 #define HB_VERSION_MINOR 9 -#define HB_VERSION_MICRO 10 +#define HB_VERSION_MICRO 11 -#define HB_VERSION_STRING "0.9.10" +#define HB_VERSION_STRING "0.9.11" #define HB_VERSION_CHECK(major,minor,micro) \ ((major)*10000+(minor)*100+(micro) >= \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/harfbuzz-0.9.10/test/api/test-buffer.c new/harfbuzz-0.9.11/test/api/test-buffer.c --- old/harfbuzz-0.9.10/test/api/test-buffer.c 2012-11-14 21:36:34.000000000 +0100 +++ new/harfbuzz-0.9.11/test/api/test-buffer.c 2013-01-07 23:45:33.000000000 +0100 @@ -135,7 +135,7 @@ /* test clear clears all properties but unicode_funcs */ - hb_buffer_clear (b); + hb_buffer_clear_contents (b); g_assert (hb_buffer_get_unicode_funcs (b) == ufuncs); g_assert (hb_buffer_get_direction (b) == HB_DIRECTION_INVALID); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/harfbuzz-0.9.10/util/options.hh new/harfbuzz-0.9.11/util/options.hh --- old/harfbuzz-0.9.10/util/options.hh 2012-12-30 00:39:10.000000000 +0100 +++ new/harfbuzz-0.9.11/util/options.hh 2013-01-07 23:46:24.000000000 +0100 @@ -175,7 +175,7 @@ void populate_buffer (hb_buffer_t *buffer, const char *text, int text_len, const char *text_before, const char *text_after) { - hb_buffer_clear (buffer); + hb_buffer_clear_contents (buffer); if (text_before) { unsigned int len = strlen (text_before); hb_buffer_add_utf8 (buffer, text_before, len, len, 0); -- To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org For additional commands, e-mail: opensuse-commit+h...@opensuse.org