The previous fix (patch 6f7ec60c) had the undesireable effect of slowing
down encoding speed on 16 bit files where the arithmetic overflow was
less likely to happen.
This fix forces the use of a FLAC__uint64 accumulator for 24 bit files
and restores the use of a FLAC_uint32 accumulator for 16 (and less) bit
files.
Unfortunately, I have not been able to prove to myself that this overflow
*cannot* happen with 16 bit files.
Gcc 4.8 has a new warning about use of un-initialized data. In particular
this new warning can detect if an automatic variable is defined in one function
and then passed to another and used before it is initialized.
For a specific 24 bit WAV file provided by Leigh Dyer
http://lists.xiph.org/pipermail/flac-dev/2013-July/004284.html
encoding with compression level 7 was generating a file a couple of
orders of magintude larger than the original.
Debugging showed that variable abs_residual_partition_sum (a FLAC__uint32)
in function precompute_partition_info_sums_() was suffering from an
arithmetic overflowing on some 24 bit input files although this value
overflowing did not always cause larger output files.
Since the value abs_residual_partition_sum is eventually stored in an
array of FLAC__uint64, it makes sense to make abs_residual_partition_sum
a FLAC__uint64 anyway.
Debugging this problem was made easier by use of the Clang compiler's
-fsanitize=integer option.
Don't use the assembly function since it seems to be slower than
the current version of FLAC__bitreader_read_rice_signed_block.
Signed-off-by: Erik de Castro Lopo <erikd@mega-nerd.com>
The NUL char is written at incorrect place when the destination string
is longer than 0, which causes memory corruption. It was broken by
commit 2d6354ff2a.
Signed-off-by: Erik de Castro Lopo <erikd@mega-nerd.com>
FLAC now defaults to building with -fvisibility=hidden on GCC4-ELF
platforms. This breaks the XMMS plugin. At least get_iplugin_info()
needs to be externally visible.
Patch from Christian Weisgerber <naddy@mips.inka.de>
The changelog declared "charset=ISO-8859-1", but used a UTF-8 encoded
name. Change the declaration to UTF-8 to fix this.
Signed-off-by: Erik de Castro Lopo <erikd@mega-nerd.com>
* Mac OS X has incomplete installations of gettext/iconv. So stop
checking for gettext command on Darwin, and install some additional m4
scripts so it can be bootstrapped on Mac OS X.
Signed-off-by: Erik de Castro Lopo <erikd@mega-nerd.com>
Use Benjamin Stiglitz' MIN macros from gcc 4.3 (according to the
changelog, __COUNTER__ was introduced in this version). Previously,
the macros weren't used on any existing gcc version; the first one
would have been 5.5.
Signed-off-by: Erik de Castro Lopo <erikd@mega-nerd.com>
Commits a7e3705d05 and
a4c321e492, while trying to simplify how
the FLAC_API_SUPPORTS_OGG_FLAC global variable was initialized,
inadvertently caused it to be always set to false, whether Ogg support
was compiled in or not.
This commit reverts the relevant part to how it looked in the 1.2.1
release, which is verbose but correct.
The problem was found by Robert Kausch <robert.kausch@freac.org>.
Signed-off-by: Erik de Castro Lopo <erikd@mega-nerd.com>
In the flac(1) man page, fix the path to the HTML documentation. Patch
by Joshua Kwan <joshk@triplehelix.org>, taken from the Debian patch
tracker for flac 1.2.1-6 (02_doc_path.patch).
Signed-off-by: Erik de Castro Lopo <erikd@mega-nerd.com>
When a locale is in effect that does not use the point as the decimal
mark (e.g., sv_SE or de_DE, which use a comma) and a ReplayGain tag is
read for --apply-replaygain-which-is-not-lossless, the gain value was
misinterpreted (e.g., "-2.29" truncated to "-2"). This is fixed by
resetting the locale to "C" temporarily, based on Josh Coalson's fix
of the dual case (writing ReplayGain tag) in commit cda02d3.
Patch by hhaamu@gmail.com, taken from the Debian patch tracker for
flac 1.2.1-6 (13_replaygain_c_locale.patch).
http://sourceforge.net/p/flac/bugs/380/
Signed-off-by: Erik de Castro Lopo <erikd@mega-nerd.com>
test_metaflac.sh wasn't aborting when replaygain values were
incorrect because the die() function was embedded in a pipe.
set -e was added so the script exits with a non-zero exit code
when die is called in a pipe.
Signed-off-by: Erik de Castro Lopo <erikd@mega-nerd.com>
The embedded awk script was using the 'lshift' function which
apparently only exists in GNU auk (gawk) and definitely does not
exist in mawk.
Thanks to Martijn van Beurden <mvanb1@gmail.com> for reporting
this issue.
Metaflac can now print all console supported characters from tags on the
screen. It also fixes metaflac to be able to import its own exports back
without non-ascii characters getting mutilated. And --no-utf8-convert
now works properly with import and export commands.
Signed-off-by: Erik de Castro Lopo <erikd@mega-nerd.com>
My Valgrind doesn't run, saying it doesn't support showing more
than 50 entries of a stack trace
Signed-off-by: Erik de Castro Lopo <erikd@mega-nerd.com>
This should enable using the disable-thorough-tests,
enable-exhaustive-tests and enable-valgrind-testing
configure switches, because setting these didn't do
anything
Signed-off-by: Erik de Castro Lopo <erikd@mega-nerd.com>