Hello community, here is the log from the commit of package libass for openSUSE:Factory checked in at 2017-02-22 13:47:55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libass (Old) and /work/SRC/openSUSE:Factory/.libass.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libass" Changes: -------- --- /work/SRC/openSUSE:Factory/libass/libass.changes 2016-10-14 03:38:24.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.libass.new/libass.changes 2017-02-22 13:47:56.876028216 +0100 @@ -1,0 +2,20 @@ +Tue Feb 21 15:06:56 UTC 2017 - mplus...@suse.com + +- Update to version 0.13.6: + * Add Justify style override that changes text justification + (left/right/center) without affecting event positioning. This + breaks ABI compatibility with prior releases. + * Fix ass_set_cache_limits() to affect total bitmap cache size + including composite bitmap cache. + * Number parsing fixes + + Fix illegal read when parsing some numbers in scientific + notation with huge exponents. + + Correctly evaluate numbers in scientific notation with large + exponents. + + Correctly evaluate numbers with many leading zeros. + * Bug fixes found with fuzzing + + Fix a small memory leak in the parser. + + Fix illegal read in the parser on specially crafted input + with \t tags. + +------------------------------------------------------------------- Old: ---- libass-0.13.4.tar.xz New: ---- libass-0.13.6.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libass.spec ++++++ --- /var/tmp/diff_new_pack.5Rmrt5/_old 2017-02-22 13:47:57.403953050 +0100 +++ /var/tmp/diff_new_pack.5Rmrt5/_new 2017-02-22 13:47:57.403953050 +0100 @@ -1,7 +1,7 @@ # # spec file for package libass # -# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -16,9 +16,9 @@ # -%define soname 5 +%define sover 9 Name: libass -Version: 0.13.4 +Version: 0.13.6 Release: 0 Summary: Library for SSA/ASS-formatted subtitle rendering License: ISC @@ -26,7 +26,7 @@ Url: https://github.com/libass/libass Source: https://github.com/libass/libass/releases/download/%{version}/%{name}-%{version}.tar.xz Source99: baselibs.conf -BuildRequires: pkg-config +BuildRequires: pkgconfig BuildRequires: xz BuildRequires: yasm BuildRequires: pkgconfig(fontconfig) >= 2.10.92 @@ -39,11 +39,11 @@ (Advanced Substation Alpha/Substation Alpha) subtitle format. It is mostly compatible with VSFilter. -%package -n libass%{soname} +%package -n libass%{sover} Summary: Library for SSA/ASS-formatted subtitle rendering Group: System/Libraries -%description -n libass%{soname} +%description -n libass%{sover} libass is a subtitle renderer for the ASS/SSA (Advanced Substation Alpha/Substation Alpha) subtitle format. It is mostly compatible with VSFilter. @@ -52,7 +52,7 @@ Summary: Development files for libass, a subtitle rendering library Group: Development/Libraries/C and C++ Requires: glibc-devel -Requires: libass%{soname} = %{version} +Requires: libass%{sover} = %{version} Requires: pkgconfig(fontconfig) Requires: pkgconfig(freetype2) >= 9.10.3 Requires: pkgconfig(fribidi) >= 0.19.0 @@ -71,21 +71,21 @@ make %{?_smp_mflags} %install -make DESTDIR='%{buildroot}' install +%make_install find %{buildroot} -type f -name "*.la" -delete -print %check make %{?_smp_mflags} check -%post -n libass%{soname} -p /sbin/ldconfig -%postun -n libass%{soname} -p /sbin/ldconfig +%post -n libass%{sover} -p /sbin/ldconfig +%postun -n libass%{sover} -p /sbin/ldconfig -%files -n libass%{soname} -%defattr(-, root, root) -%{_libdir}/libass.so.%{soname}* +%files -n libass%{sover} +%defattr(-,root,root) +%{_libdir}/libass.so.%{sover}* %files devel -%defattr(-, root, root) +%defattr(-,root,root) %{_includedir}/ass %{_libdir}/libass.so %{_libdir}/pkgconfig/libass.pc ++++++ baselibs.conf ++++++ --- /var/tmp/diff_new_pack.5Rmrt5/_old 2017-02-22 13:47:57.435948495 +0100 +++ /var/tmp/diff_new_pack.5Rmrt5/_new 2017-02-22 13:47:57.435948495 +0100 @@ -1 +1 @@ -libass5 +libass9 ++++++ libass-0.13.4.tar.xz -> libass-0.13.6.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libass-0.13.4/Changelog new/libass-0.13.6/Changelog --- old/libass-0.13.4/Changelog 2016-10-05 01:10:16.000000000 +0200 +++ new/libass-0.13.6/Changelog 2017-01-03 20:31:50.000000000 +0100 @@ -1,10 +1,30 @@ +libass (0.13.6) + * Bump ABI version to account for the new Justify field in ASS_Style + that was added in 0.13.5. + +libass (0.13.5) + * Add Justify style override that changes text justification + (left/right/center) without affecting event positioning. + * Fix ass_set_cache_limits() to affect total bitmap cache size + including composite bitmap cache. + * Number parsing fixes + * Fix illegal read when parsing some numbers in scientific notation + with huge exponents. + * Correctly evaluate numbers in scientific notation with large exponents. + * Correctly evaluate numbers with many leading zeros. + * Bug fixes found with fuzzing + * Fix a small memory leak in the parser. + * Fix illegal read in the parser on specially crafted input with \t tags. + libass (0.13.4) * Bug fixes found with fuzzing - * Fix memory reallocation in the shaper. + * Fix memory reallocation in the shaper. (CVE-2016-7972) * Fix two small memory leaks in the parser and test program. * Fix illegal read in Gaussian blur coefficient calculations. + (CVE-2016-7970) * Fix mode 0/3 line wrapping equalization in specific cases which could result in illegal reads while laying out and shaping text. + (CVE-2016-7969) libass (0.13.3) * Improve compatibility/portablility of build system, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libass-0.13.4/Makefile.in new/libass-0.13.6/Makefile.in --- old/libass-0.13.4/Makefile.in 2016-10-05 01:12:17.000000000 +0200 +++ new/libass-0.13.6/Makefile.in 2017-01-03 20:32:12.000000000 +0100 @@ -364,7 +364,6 @@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ -runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libass-0.13.4/config.guess new/libass-0.13.6/config.guess --- old/libass-0.13.4/config.guess 2016-10-05 01:12:17.000000000 +0200 +++ new/libass-0.13.6/config.guess 2017-01-03 20:32:12.000000000 +0100 @@ -1,8 +1,8 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright 1992-2015 Free Software Foundation, Inc. +# Copyright 1992-2014 Free Software Foundation, Inc. -timestamp='2015-08-20' +timestamp='2014-11-04' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -50,7 +50,7 @@ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright 1992-2015 Free Software Foundation, Inc. +Copyright 1992-2014 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -168,27 +168,20 @@ # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" - UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ - /sbin/$sysctl 2>/dev/null || \ - /usr/sbin/$sysctl 2>/dev/null || \ - echo unknown)` + UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; - earmv*) - arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'` - endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'` - machine=${arch}${endian}-unknown - ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in - arm*|earm*|i386|m68k|ns32k|sh3*|sparc|vax) + arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ @@ -204,13 +197,6 @@ os=netbsd ;; esac - # Determine ABI tags. - case "${UNAME_MACHINE_ARCH}" in - earm*) - expr='s/^earmv[0-9]/-eabi/;s/eb$//' - abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"` - ;; - esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need @@ -221,13 +207,13 @@ release='-gnu' ;; *) - release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2` + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "${machine}-${os}${release}${abi}" + echo "${machine}-${os}${release}" exit ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` @@ -249,9 +235,6 @@ *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; - *:Sortix:*:*) - echo ${UNAME_MACHINE}-unknown-sortix - exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) @@ -950,9 +933,6 @@ crisv32:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; - e2k:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; frv:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; @@ -1041,7 +1021,7 @@ echo ${UNAME_MACHINE}-dec-linux-${LIBC} exit ;; x86_64:Linux:*:*) - echo ${UNAME_MACHINE}-pc-linux-${LIBC} + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libass-0.13.4/config.sub new/libass-0.13.6/config.sub --- old/libass-0.13.4/config.sub 2016-10-05 01:12:17.000000000 +0200 +++ new/libass-0.13.6/config.sub 2017-01-03 20:32:12.000000000 +0100 @@ -1,8 +1,8 @@ #! /bin/sh # Configuration validation subroutine script. -# Copyright 1992-2015 Free Software Foundation, Inc. +# Copyright 1992-2014 Free Software Foundation, Inc. -timestamp='2015-08-20' +timestamp='2014-12-03' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -68,7 +68,7 @@ version="\ GNU config.sub ($timestamp) -Copyright 1992-2015 Free Software Foundation, Inc. +Copyright 1992-2014 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -117,7 +117,7 @@ case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ - knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ + knetbsd*-gnu* | netbsd*-gnu* | \ kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os @@ -255,13 +255,12 @@ | arc | arceb \ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ | avr | avr32 \ - | ba \ | be32 | be64 \ | bfin \ | c4x | c8051 | clipper \ | d10v | d30v | dlx | dsp16xx \ - | e2k | epiphany \ - | fido | fr30 | frv | ft32 \ + | epiphany \ + | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ | i370 | i860 | i960 | ia64 \ @@ -306,7 +305,7 @@ | riscv32 | riscv64 \ | rl78 | rx \ | score \ - | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ @@ -377,13 +376,12 @@ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ - | ba-* \ | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ | c8051-* | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ - | e2k-* | elxsi-* \ + | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ @@ -430,13 +428,12 @@ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pyramid-* \ - | riscv32-* | riscv64-* \ | rl78-* | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ - | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile*-* \ @@ -521,9 +518,6 @@ basic_machine=i386-pc os=-aros ;; - asmjs) - basic_machine=asmjs-unknown - ;; aux) basic_machine=m68k-apple os=-aux @@ -1379,7 +1373,7 @@ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* | -plan9* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* | -aros* | -cloudabi* | -sortix* \ + | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libass-0.13.4/configure new/libass-0.13.6/configure --- old/libass-0.13.4/configure 2016-10-05 01:12:16.000000000 +0200 +++ new/libass-0.13.6/configure 2017-01-03 20:32:11.000000000 +0100 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for libass 0.13.4. +# Generated by GNU Autoconf 2.69 for libass 0.13.6. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. @@ -587,8 +587,8 @@ # Identity of this package. PACKAGE_NAME='libass' PACKAGE_TARNAME='libass' -PACKAGE_VERSION='0.13.4' -PACKAGE_STRING='libass 0.13.4' +PACKAGE_VERSION='0.13.6' +PACKAGE_STRING='libass 0.13.6' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -772,7 +772,6 @@ docdir oldincludedir includedir -runstatedir localstatedir sharedstatedir sysconfdir @@ -879,7 +878,6 @@ sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' -runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' @@ -1132,15 +1130,6 @@ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; - -runstatedir | --runstatedir | --runstatedi | --runstated \ - | --runstate | --runstat | --runsta | --runst | --runs \ - | --run | --ru | --r) - ac_prev=runstatedir ;; - -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ - | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ - | --run=* | --ru=* | --r=*) - runstatedir=$ac_optarg ;; - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1278,7 +1267,7 @@ for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir runstatedir + libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -1391,7 +1380,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 libass 0.13.4 to adapt to many kinds of systems. +\`configure' configures libass 0.13.6 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1431,7 +1420,6 @@ --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] @@ -1462,7 +1450,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of libass 0.13.4:";; + short | recursive ) echo "Configuration of libass 0.13.6:";; esac cat <<\_ACEOF @@ -1613,7 +1601,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -libass configure 0.13.4 +libass configure 0.13.6 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2032,7 +2020,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by libass $as_me 0.13.4, which was +It was created by libass $as_me 0.13.6, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2895,7 +2883,7 @@ # Define the identity of the package. PACKAGE='libass' - VERSION='0.13.4' + VERSION='0.13.6' cat >>confdefs.h <<_ACEOF @@ -5339,7 +5327,7 @@ lt_cv_deplibs_check_method=pass_all ;; -netbsd* | netbsdelf*-gnu) +netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else @@ -9032,9 +9020,6 @@ openbsd* | bitrig*) with_gnu_ld=no ;; - linux* | k*bsd*-gnu | gnu*) - link_all_deplibs=no - ;; esac ld_shlibs=yes @@ -9289,7 +9274,7 @@ fi ;; - netbsd* | netbsdelf*-gnu) + netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= @@ -9959,7 +9944,6 @@ if test yes = "$lt_cv_irix_exported_symbol"; then archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' fi - link_all_deplibs=no else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' @@ -9981,7 +9965,7 @@ esac ;; - netbsd* | netbsdelf*-gnu) + netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else @@ -11096,18 +11080,6 @@ dynamic_linker='GNU/Linux ld.so' ;; -netbsdelf*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='NetBSD ld.elf_so' - ;; - netbsd*) version_type=sunos need_lib_prefix=no @@ -15137,7 +15109,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by libass $as_me 0.13.4, which was +This file was extended by libass $as_me 0.13.6, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -15203,7 +15175,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -libass config.status 0.13.4 +libass config.status 0.13.6 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libass-0.13.4/configure.ac new/libass-0.13.6/configure.ac --- old/libass-0.13.4/configure.ac 2016-10-05 01:07:37.000000000 +0200 +++ new/libass-0.13.6/configure.ac 2017-01-03 20:31:50.000000000 +0100 @@ -1,4 +1,4 @@ -AC_INIT(libass, 0.13.4) +AC_INIT(libass, 0.13.6) AM_INIT_AUTOMAKE AC_CONFIG_MACRO_DIR([m4]) # Disable Fortran checks diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libass-0.13.4/install-sh new/libass-0.13.6/install-sh --- old/libass-0.13.4/install-sh 2016-10-05 01:12:17.000000000 +0200 +++ new/libass-0.13.6/install-sh 2017-01-03 20:32:12.000000000 +0100 @@ -1,7 +1,7 @@ #!/bin/sh # install - install a program, script, or datafile -scriptversion=2014-09-12.12; # UTC +scriptversion=2013-12-25.23; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the @@ -324,41 +324,34 @@ # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) - # $RANDOM is not portable (e.g. dash); use it when possible to - # lower collision chance tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ - trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0 + trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 - # As "mkdir -p" follows symlinks and we work in /tmp possibly; so - # create the $tmpdir first (and fail if unsuccessful) to make sure - # that nobody tries to guess the $tmpdir name. if (umask $mkdir_umask && - $mkdirprog $mkdir_mode "$tmpdir" && - exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. - test_tmpdir="$tmpdir/a" - ls_ld_tmpdir=`ls -ld "$test_tmpdir"` + ls_ld_tmpdir=`ls -ld "$tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && - $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { - ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` + $mkdirprog -m$different_mode -p -- "$tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi - rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" + rmdir "$tmpdir/d" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. - rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null + rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null fi trap '' 0;; esac;; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libass-0.13.4/libass/Makefile.am new/libass-0.13.6/libass/Makefile.am --- old/libass-0.13.4/libass/Makefile.am 2016-10-05 01:08:08.000000000 +0200 +++ new/libass-0.13.6/libass/Makefile.am 2017-01-03 20:31:50.000000000 +0100 @@ -2,9 +2,9 @@ -Werror-implicit-function-declaration -Wstrict-prototypes \ -Wpointer-arith -Wredundant-decls -D_GNU_SOURCE -LIBASS_LT_CURRENT = 8 -LIBASS_LT_REVISION = 2 -LIBASS_LT_AGE = 3 +LIBASS_LT_CURRENT = 9 +LIBASS_LT_REVISION = 0 +LIBASS_LT_AGE = 0 yasm_verbose = $(yasm_verbose_$(V)) yasm_verbose_ = $(yasm_verbose_$(AM_DEFAULT_VERBOSITY)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libass-0.13.4/libass/Makefile.in new/libass-0.13.6/libass/Makefile.in --- old/libass-0.13.4/libass/Makefile.in 2016-10-05 01:12:17.000000000 +0200 +++ new/libass-0.13.6/libass/Makefile.in 2017-01-03 20:32:13.000000000 +0100 @@ -374,7 +374,6 @@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ -runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -388,9 +387,9 @@ -Werror-implicit-function-declaration -Wstrict-prototypes \ -Wpointer-arith -Wredundant-decls -D_GNU_SOURCE -LIBASS_LT_CURRENT = 8 -LIBASS_LT_REVISION = 2 -LIBASS_LT_AGE = 3 +LIBASS_LT_CURRENT = 9 +LIBASS_LT_REVISION = 0 +LIBASS_LT_AGE = 0 yasm_verbose = $(yasm_verbose_$(V)) yasm_verbose_ = $(yasm_verbose_$(AM_DEFAULT_VERBOSITY)) yasm_verbose_0 = @echo " YASM " $@; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libass-0.13.4/libass/ass.c new/libass-0.13.6/libass/ass.c --- old/libass-0.13.4/libass/ass.c 2016-10-04 22:56:28.000000000 +0200 +++ new/libass-0.13.6/libass/ass.c 2016-12-29 01:48:05.000000000 +0100 @@ -449,6 +449,7 @@ FPVAL(Angle) INTVAL(BorderStyle) INTVAL(Alignment) + INTVAL(Justify) INTVAL(MarginL) INTVAL(MarginR) INTVAL(MarginV) @@ -621,6 +622,7 @@ } else if (!strncmp(str, "Language:", 9)) { char *p = str + 9; while (*p && ass_isspace(*p)) p++; + free(track->Language); track->Language = strndup(p, 2); } return 0; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libass-0.13.4/libass/ass.h new/libass-0.13.6/libass/ass.h --- old/libass-0.13.4/libass/ass.h 2016-10-05 01:08:24.000000000 +0200 +++ new/libass-0.13.6/libass/ass.h 2017-01-03 20:31:50.000000000 +0100 @@ -24,7 +24,7 @@ #include <stdarg.h> #include "ass_types.h" -#define LIBASS_VERSION 0x01304000 +#define LIBASS_VERSION 0x01306000 #ifdef __cplusplus extern "C" { @@ -166,6 +166,10 @@ * resolution given by the ASS_Track. */ ASS_OVERRIDE_FULL_STYLE = 1 << 9, + /** + * On dialogue events override: Justify + */ + ASS_OVERRIDE_BIT_JUSTIFY = 1 << 10, } ASS_OverrideBits; /** diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libass-0.13.4/libass/ass_directwrite.c new/libass-0.13.6/libass/ass_directwrite.c --- old/libass-0.13.4/libass/ass_directwrite.c 2016-07-11 23:29:00.000000000 +0200 +++ new/libass-0.13.6/libass/ass_directwrite.c 2016-12-29 01:48:05.000000000 +0100 @@ -66,8 +66,8 @@ static HRESULT STDMETHODCALLTYPE FallbackLogTextRenderer_IsPixelSnappingDisabled( IDWriteTextRenderer *This, - _In_opt_ void* clientDrawingContext, - _Out_ BOOL* isDisabled + void* clientDrawingContext, + BOOL* isDisabled ) { *isDisabled = true; @@ -76,8 +76,8 @@ static HRESULT STDMETHODCALLTYPE FallbackLogTextRenderer_GetCurrentTransform( IDWriteTextRenderer *This, - _In_opt_ void* clientDrawingContext, - _Out_ DWRITE_MATRIX* transform + void* clientDrawingContext, + DWRITE_MATRIX* transform ) { return E_NOTIMPL; @@ -85,8 +85,8 @@ static HRESULT STDMETHODCALLTYPE FallbackLogTextRenderer_GetPixelsPerDip( IDWriteTextRenderer *This, - _In_opt_ void* clientDrawingContext, - _Out_ FLOAT* pixelsPerDip + void* clientDrawingContext, + FLOAT* pixelsPerDip ) { return E_NOTIMPL; @@ -94,12 +94,12 @@ static HRESULT STDMETHODCALLTYPE FallbackLogTextRenderer_DrawGlyphRun( IDWriteTextRenderer *This, - _In_opt_ void* clientDrawingContext, + void* clientDrawingContext, FLOAT baselineOriginX, FLOAT baselineOriginY, DWRITE_MEASURING_MODE measuringMode, - _In_ DWRITE_GLYPH_RUN const* glyphRun, - _In_ DWRITE_GLYPH_RUN_DESCRIPTION const* glyphRunDescription, + DWRITE_GLYPH_RUN const* glyphRun, + DWRITE_GLYPH_RUN_DESCRIPTION const* glyphRunDescription, IUnknown* clientDrawingEffect ) { @@ -122,10 +122,10 @@ static HRESULT STDMETHODCALLTYPE FallbackLogTextRenderer_DrawUnderline( IDWriteTextRenderer *This, - _In_opt_ void* clientDrawingContext, + void* clientDrawingContext, FLOAT baselineOriginX, FLOAT baselineOriginY, - _In_ DWRITE_UNDERLINE const* underline, + DWRITE_UNDERLINE const* underline, IUnknown* clientDrawingEffect ) { @@ -134,10 +134,10 @@ static HRESULT STDMETHODCALLTYPE FallbackLogTextRenderer_DrawStrikethrough( IDWriteTextRenderer *This, - _In_opt_ void* clientDrawingContext, + void* clientDrawingContext, FLOAT baselineOriginX, FLOAT baselineOriginY, - _In_ DWRITE_STRIKETHROUGH const* strikethrough, + DWRITE_STRIKETHROUGH const* strikethrough, IUnknown* clientDrawingEffect ) { @@ -722,9 +722,9 @@ }; typedef HRESULT (WINAPI *DWriteCreateFactoryFn)( - _In_ DWRITE_FACTORY_TYPE factoryType, - _In_ REFIID iid, - _Out_ IUnknown **factory + DWRITE_FACTORY_TYPE factoryType, + REFIID iid, + IUnknown **factory ); /* diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libass-0.13.4/libass/ass_parse.c new/libass-0.13.6/libass/ass_parse.c --- old/libass-0.13.4/libass/ass_parse.c 2016-07-11 23:29:00.000000000 +0200 +++ new/libass-0.13.6/libass/ass_parse.c 2016-12-29 01:48:05.000000000 +0100 @@ -262,7 +262,8 @@ /** * \brief Parse style override tag. * \param p string to parse - * \param end end of string to parse, which must be '}' or ')' + * \param end end of string to parse, which must be '}', ')', or the first + * of a number of spaces immediately preceding '}' or ')' * \param pwr multiplier for some tag effects (comes from \t tags) */ char *parse_tag(ASS_Renderer *render_priv, char *p, char *end, double pwr) @@ -272,7 +273,8 @@ if (*p != '\\') return p; ++p; - skip_spaces(&p); + if (p != end) + skip_spaces(&p); char *q = p; while (*q != '(' && *q != '\\' && q != end) @@ -293,7 +295,8 @@ if (*q == '(') { ++q; while (1) { - skip_spaces(&q); + if (q != end) + skip_spaces(&q); // Split on commas. If there is a backslash, ignore any // commas following it and lump everything starting from @@ -315,7 +318,7 @@ push_arg(args, &nargs, q, r); q = r; // The closing parenthesis could be missing. - if (*q == ')') + if (q != end) ++q; break; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libass-0.13.4/libass/ass_render.c new/libass-0.13.6/libass/ass_render.c --- old/libass-0.13.4/libass/ass_render.c 2016-10-05 00:39:06.000000000 +0200 +++ new/libass-0.13.6/libass/ass_render.c 2016-12-29 01:48:05.000000000 +0100 @@ -784,6 +784,9 @@ if (requested & ASS_OVERRIDE_BIT_ALIGNMENT) new->Alignment = user->Alignment; + if (requested & ASS_OVERRIDE_BIT_JUSTIFY) + new->Justify = user->Justify; + if (requested & ASS_OVERRIDE_BIT_MARGINS) { new->MarginL = user->MarginL; new->MarginR = user->MarginR; @@ -886,6 +889,7 @@ render_priv->state.wrap_style = render_priv->track->WrapStyle; render_priv->state.alignment = render_priv->state.style->Alignment; + render_priv->state.justify = render_priv->state.style->Justify; render_priv->state.pos_x = 0; render_priv->state.pos_y = 0; render_priv->state.org_x = 0; @@ -2071,19 +2075,49 @@ double width = 0; int last_break = -1; int halign = render_priv->state.alignment & 3; + int justify = render_priv->state.justify; + double max_width = 0; if (render_priv->state.evt_type == EVENT_HSCROLL) return; for (i = 0; i <= text_info->length; ++i) { // (text_info->length + 1) is the end of the last line if ((i == text_info->length) || glyphs[i].linebreak) { + max_width = FFMAX(max_width,width); + width = 0; + } + if (i < text_info->length && !glyphs[i].skip && + glyphs[i].symbol != '\n' && glyphs[i].symbol != 0) { + width += d6_to_double(glyphs[i].cluster_advance.x); + } + } + for (i = 0; i <= text_info->length; ++i) { // (text_info->length + 1) is the end of the last line + if ((i == text_info->length) || glyphs[i].linebreak) { double shift = 0; if (halign == HALIGN_LEFT) { // left aligned, no action - shift = 0; + if (justify == ASS_JUSTIFY_RIGHT) { + shift = max_width - width; + } else if (justify == ASS_JUSTIFY_CENTER) { + shift = (max_width - width) / 2.0; + } else { + shift = 0; + } } else if (halign == HALIGN_RIGHT) { // right aligned - shift = max_text_width - width; + if (justify == ASS_JUSTIFY_LEFT) { + shift = max_text_width - max_width; + } else if (justify == ASS_JUSTIFY_CENTER) { + shift = max_text_width - max_width + (max_width - width) / 2.0; + } else { + shift = max_text_width - width; + } } else if (halign == HALIGN_CENTER) { // centered - shift = (max_text_width - width) / 2.0; + if (justify == ASS_JUSTIFY_LEFT) { + shift = (max_text_width - max_width) / 2.0; + } else if (justify == ASS_JUSTIFY_RIGHT) { + shift = (max_text_width - max_width) / 2.0 + max_width - width; + } else { + shift = (max_text_width - width) / 2.0; + } } for (j = last_break + 1; j < i; ++j) { GlyphInfo *info = glyphs + j; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libass-0.13.4/libass/ass_render.h new/libass-0.13.6/libass/ass_render.h --- old/libass-0.13.4/libass/ass_render.h 2016-07-11 23:29:00.000000000 +0200 +++ new/libass-0.13.6/libass/ass_render.h 2016-12-29 01:48:05.000000000 +0100 @@ -42,8 +42,10 @@ #include "ass_rasterizer.h" #define GLYPH_CACHE_MAX 10000 -#define BITMAP_CACHE_MAX_SIZE 128 * 1048576 -#define COMPOSITE_CACHE_MAX_SIZE 64 * 1048576 +#define MEGABYTE (1024 * 1024) +#define BITMAP_CACHE_MAX_SIZE (128 * MEGABYTE) +#define COMPOSITE_CACHE_RATIO 2 +#define COMPOSITE_CACHE_MAX_SIZE (BITMAP_CACHE_MAX_SIZE / COMPOSITE_CACHE_RATIO) #define PARSED_FADE (1<<0) #define PARSED_A (1<<1) @@ -220,6 +222,7 @@ FT_Stroker stroker; int stroker_radius; // last stroker radius, for caching stroker objects int alignment; // alignment overrides go here; if zero, style value will be used + int justify; // justify instructions double frx, fry, frz; double fax, fay; // text shearing enum { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libass-0.13.4/libass/ass_render_api.c new/libass-0.13.6/libass/ass_render_api.c --- old/libass-0.13.4/libass/ass_render_api.c 2016-07-11 23:29:00.000000000 +0200 +++ new/libass-0.13.6/libass/ass_render_api.c 2016-12-29 01:48:05.000000000 +0100 @@ -180,8 +180,18 @@ int bitmap_max) { render_priv->cache.glyph_max = glyph_max ? glyph_max : GLYPH_CACHE_MAX; - render_priv->cache.bitmap_max_size = bitmap_max ? 1048576 * bitmap_max : - BITMAP_CACHE_MAX_SIZE; + + size_t bitmap_cache, composite_cache; + if (bitmap_max) { + bitmap_cache = MEGABYTE * (size_t) bitmap_max; + composite_cache = bitmap_cache / (COMPOSITE_CACHE_RATIO + 1); + bitmap_cache -= composite_cache; + } else { + bitmap_cache = BITMAP_CACHE_MAX_SIZE; + composite_cache = COMPOSITE_CACHE_MAX_SIZE; + } + render_priv->cache.bitmap_max_size = bitmap_cache; + render_priv->cache.composite_max_size = composite_cache; } ASS_FontProvider * diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libass-0.13.4/libass/ass_strtod.c new/libass-0.13.6/libass/ass_strtod.c --- old/libass-0.13.4/libass/ass_strtod.c 2015-10-26 20:26:04.000000000 +0100 +++ new/libass-0.13.6/libass/ass_strtod.c 2016-12-29 01:48:05.000000000 +0100 @@ -1,6 +1,7 @@ /* * Copyright (c) 1988-1993 The Regents of the University of California. * Copyright (c) 1994 Sun Microsystems, Inc. + * Copyright (c) 2016 Oleg Oshmyan <chor...@inbox.lv> * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without @@ -16,11 +17,12 @@ #include "ass_compat.h" #include <stdlib.h> +#include <float.h> #include <errno.h> #include "ass_string.h" static -const int maxExponent = 511; /* Largest possible base 10 exponent. Any +const size_t maxExponent = 511; /* Largest possible base 10 exponent. Any * exponent larger than this will already * produce underflow or overflow, so there's * no need to worry about additional digits. @@ -39,6 +41,19 @@ 1.0e256 }; +static +const double negPowOf10[] = { /* Table giving negative binary powers */ + 0.1, /* of 10. Entry is 10^-2^i. */ + 0.01, /* Used to convert decimal exponents */ + 1.0e-4, /* into floating-point numbers. */ + 1.0e-8, + 1.0e-16, + 1.0e-32, + 1.0e-64, + 1.0e-128, + 1.0e-256 +}; + /* *---------------------------------------------------------------------- * @@ -78,12 +93,13 @@ * address here. */ ) { - int sign, expSign = 0; - double fraction, dblExp, *d; + int sign, fracExpSign, expSign; + double fraction, dblExp; + const double *d; register const char *p; register int c; - int exp = 0; /* Exponent read from "EX" field. */ - int fracExp = 0; /* Exponent that derives from the fractional + size_t exp = 0; /* Exponent read from "EX" field. */ + size_t fracExp; /* Exponent that derives from the fractional * part. Under normal circumstatnces, it is * the negative of the number of digits in F. * However, if I is very long, the last digits @@ -92,9 +108,10 @@ * unnecessary overflow on I alone). In this * case, fracExp is incremented one for each * dropped digit. */ - int mantSize; /* Number of digits in mantissa. */ - int decPt; /* Number of mantissa digits BEFORE decimal + size_t mantSize; /* Number of digits in mantissa. */ + size_t decPt; /* Number of mantissa digits BEFORE decimal * point. */ + size_t leadZeros; /* Number of leading zeros in mantissa. */ const char *pExp; /* Temporarily holds location of exponent * in string. */ @@ -122,14 +139,17 @@ */ decPt = -1; + leadZeros = -1; for (mantSize = 0; ; mantSize += 1) { c = *p; if (!ass_isdigit(c)) { - if ((c != '.') || (decPt >= 0)) { + if ((c != '.') || (decPt != (size_t) -1)) { break; } decPt = mantSize; + } else if ((c != '0') && (leadZeros == (size_t) -1)) { + leadZeros = mantSize; } p += 1; } @@ -141,17 +161,27 @@ * they can't affect the value anyway. */ + if (leadZeros == (size_t) -1) { + leadZeros = mantSize; + } pExp = p; - p -= mantSize; - if (decPt < 0) { + p -= mantSize - leadZeros; + if (decPt == (size_t) -1) { decPt = mantSize; } else { mantSize -= 1; /* One of the digits was the point. */ + if (decPt < leadZeros) { + leadZeros -= 1; + } + } + if (mantSize - leadZeros > 18) { + mantSize = leadZeros + 18; } - if (mantSize > 18) { - fracExp = decPt - 18; - mantSize = 18; + if (decPt < mantSize) { + fracExpSign = 1; + fracExp = mantSize - decPt; } else { + fracExpSign = 0; fracExp = decPt - mantSize; } if (mantSize == 0) { @@ -159,9 +189,11 @@ p = string; goto done; } else { - int frac1, frac2; + int frac1, frac2, m; + mantSize -= leadZeros; + m = mantSize; frac1 = 0; - for ( ; mantSize > 9; mantSize -= 1) + for ( ; m > 9; m -= 1) { c = *p; p += 1; @@ -172,7 +204,7 @@ frac1 = 10*frac1 + (c - '0'); } frac2 = 0; - for (; mantSize > 0; mantSize -= 1) + for (; m > 0; m -= 1) { c = *p; p += 1; @@ -191,6 +223,14 @@ p = pExp; if ((*p == 'E') || (*p == 'e')) { + size_t expLimit; /* If exp > expLimit, appending another digit + * to exp is guaranteed to make it too large. + * If exp == expLimit, this may depend on + * the exact digit, but in any case exp with + * the digit appended and fracExp added will + * still fit in size_t, even if it does + * exceed maxExponent. */ + int expWraparound = 0; p += 1; if (*p == '-') { expSign = 1; @@ -201,15 +241,38 @@ } expSign = 0; } + if (expSign == fracExpSign) { + if (maxExponent < fracExp) { + expLimit = 0; + } else { + expLimit = (maxExponent - fracExp) / 10; + } + } else { + expLimit = fracExp / 10 + (fracExp % 10 + maxExponent) / 10; + } while (ass_isdigit(*p)) { + if ((exp > expLimit) || expWraparound) { + do { + p += 1; + } while (ass_isdigit(*p)); + goto expOverflow; + } else if (exp > ((size_t) -1 - (*p - '0')) / 10) { + expWraparound = 1; + } exp = exp * 10 + (*p - '0'); p += 1; } - } - if (expSign) { - exp = fracExp - exp; + if (expSign == fracExpSign) { + exp = fracExp + exp; + } else if ((fracExp <= exp) || expWraparound) { + exp = exp - fracExp; + } else { + exp = fracExp - exp; + expSign = fracExpSign; + } } else { - exp = fracExp + exp; + exp = fracExp; + expSign = fracExpSign; } /* @@ -219,18 +282,39 @@ * fraction. */ - if (exp < 0) { - expSign = 1; - exp = -exp; - } else { - expSign = 0; - } if (exp > maxExponent) { +expOverflow: exp = maxExponent; - errno = ERANGE; + if (fraction != 0.0) { + errno = ERANGE; + } + } + /* Prefer positive powers of 10 for increased precision, especially + * for small powers that are represented exactly in floating-point. */ + if ((exp <= DBL_MAX_10_EXP) || !expSign) { + d = powersOf10; + } else { + /* The floating-point format supports more negative exponents + * than positive, or perhaps the result is a subnormal number. */ + if (exp > -DBL_MIN_10_EXP) { + /* The result might be a valid subnormal number, but the + * exponent underflows. Tweak fraction so that it is below + * 1.0 first, so that if the exponent still underflows after + * that, the result is sure to underflow as well. */ + exp -= mantSize; + dblExp = 1.0; + for (d = powersOf10; mantSize != 0; mantSize >>= 1, d += 1) { + if (mantSize & 01) { + dblExp *= *d; + } + } + fraction /= dblExp; + } + d = negPowOf10; + expSign = 0; } dblExp = 1.0; - for (d = (double *) powersOf10; exp != 0; exp >>= 1, d += 1) { + for (; exp != 0; exp >>= 1, d += 1) { if (exp & 01) { dblExp *= *d; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libass-0.13.4/libass/ass_types.h new/libass-0.13.6/libass/ass_types.h --- old/libass-0.13.4/libass/ass_types.h 2015-09-07 11:42:54.000000000 +0200 +++ new/libass-0.13.6/libass/ass_types.h 2016-12-29 01:48:05.000000000 +0100 @@ -28,6 +28,10 @@ #define HALIGN_LEFT 1 #define HALIGN_CENTER 2 #define HALIGN_RIGHT 3 +#define ASS_JUSTIFY_AUTO 0 +#define ASS_JUSTIFY_LEFT 1 +#define ASS_JUSTIFY_CENTER 2 +#define ASS_JUSTIFY_RIGHT 3 #define FONT_WEIGHT_LIGHT 300 #define FONT_WEIGHT_MEDIUM 400 @@ -73,6 +77,7 @@ int Encoding; int treat_fontname_as_pattern; double Blur; + int Justify; } ASS_Style; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libass-0.13.4/ltmain.sh new/libass-0.13.6/ltmain.sh --- old/libass-0.13.4/ltmain.sh 2016-10-05 01:12:09.000000000 +0200 +++ new/libass-0.13.6/ltmain.sh 2017-01-03 20:32:07.000000000 +0100 @@ -31,7 +31,7 @@ PROGRAM=libtool PACKAGE=libtool -VERSION="2.4.6 Debian-2.4.6-0.1" +VERSION=2.4.6 package_revision=2.4.6 @@ -2073,7 +2073,7 @@ autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` Report bugs to <bug-libt...@gnu.org>. -GNU libtool home page: <http://www.gnu.org/s/libtool/>. +GNU libtool home page: <http://www.gnu.org/software/libtool/>. General help using GNU software: <http://www.gnu.org/gethelp/>." exit 0 } @@ -7272,13 +7272,10 @@ # -tp=* Portland pgcc target processor selection # --sysroot=* for sysroot support # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization - # -specs=* GCC specs files # -stdlib=* select c++ std lib with clang - # -fsanitize=* Clang/GCC memory and address sanitizer -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ - -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \ - -specs=*|-fsanitize=*) + -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*) func_quote_for_eval "$arg" arg=$func_quote_for_eval_result func_append compile_command " $arg" @@ -7571,10 +7568,7 @@ case $pass in dlopen) libs=$dlfiles ;; dlpreopen) libs=$dlprefiles ;; - link) - libs="$deplibs %DEPLIBS%" - test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" - ;; + link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; esac fi if test lib,dlpreopen = "$linkmode,$pass"; then @@ -7893,19 +7887,19 @@ # It is a libtool convenience library, so add in its objects. func_append convenience " $ladir/$objdir/$old_library" func_append old_convenience " $ladir/$objdir/$old_library" - tmp_libs= - for deplib in $dependency_libs; do - deplibs="$deplib $deplibs" - if $opt_preserve_dup_deps; then - case "$tmp_libs " in - *" $deplib "*) func_append specialdeplibs " $deplib" ;; - esac - fi - func_append tmp_libs " $deplib" - done elif test prog != "$linkmode" && test lib != "$linkmode"; then func_fatal_error "'$lib' is not a convenience library" fi + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if $opt_preserve_dup_deps; then + case "$tmp_libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append tmp_libs " $deplib" + done continue fi # $pass = conv @@ -8829,9 +8823,6 @@ revision=$number_minor lt_irix_increment=no ;; - *) - func_fatal_configuration "$modename: unknown library version type '$version_type'" - ;; esac ;; no) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libass-0.13.4/m4/libtool.m4 new/libass-0.13.6/m4/libtool.m4 --- old/libass-0.13.4/m4/libtool.m4 2016-10-05 01:12:09.000000000 +0200 +++ new/libass-0.13.6/m4/libtool.m4 2017-01-03 20:32:07.000000000 +0100 @@ -2887,18 +2887,6 @@ dynamic_linker='GNU/Linux ld.so' ;; -netbsdelf*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='NetBSD ld.elf_so' - ;; - netbsd*) version_type=sunos need_lib_prefix=no @@ -3558,7 +3546,7 @@ lt_cv_deplibs_check_method=pass_all ;; -netbsd* | netbsdelf*-gnu) +netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' else @@ -4436,7 +4424,7 @@ ;; esac ;; - netbsd* | netbsdelf*-gnu) + netbsd*) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise @@ -4948,9 +4936,6 @@ ;; esac ;; - linux* | k*bsd*-gnu | gnu*) - _LT_TAGVAR(link_all_deplibs, $1)=no - ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; @@ -5013,9 +4998,6 @@ openbsd* | bitrig*) with_gnu_ld=no ;; - linux* | k*bsd*-gnu | gnu*) - _LT_TAGVAR(link_all_deplibs, $1)=no - ;; esac _LT_TAGVAR(ld_shlibs, $1)=yes @@ -5270,7 +5252,7 @@ fi ;; - netbsd* | netbsdelf*-gnu) + netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= @@ -5791,7 +5773,6 @@ if test yes = "$lt_cv_irix_exported_symbol"; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' fi - _LT_TAGVAR(link_all_deplibs, $1)=no else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' @@ -5813,7 +5794,7 @@ esac ;; - netbsd* | netbsdelf*-gnu) + netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libass-0.13.4/profile/Makefile.in new/libass-0.13.6/profile/Makefile.in --- old/libass-0.13.4/profile/Makefile.in 2016-10-05 01:12:17.000000000 +0200 +++ new/libass-0.13.6/profile/Makefile.in 2017-01-03 20:32:13.000000000 +0100 @@ -304,7 +304,6 @@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ -runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libass-0.13.4/test/Makefile.in new/libass-0.13.6/test/Makefile.in --- old/libass-0.13.4/test/Makefile.in 2016-10-05 01:12:17.000000000 +0200 +++ new/libass-0.13.6/test/Makefile.in 2017-01-03 20:32:13.000000000 +0100 @@ -304,7 +304,6 @@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ -runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@