lavc/sinewin: Do not declare AAC 120/960 tables as const.

ff_sine_window_init() is writing to these tables causing
a crash if compiled with gcc 8 and lto.

Analyzed by Martin Liška in:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85132

Fixes ticket #7491.
This commit is contained in:
Carl Eugen Hoyos 2018-10-14 23:48:23 +02:00
parent feb05ffa99
commit 10f468156c
4 changed files with 10 additions and 5 deletions

View File

@ -38,6 +38,9 @@
#define SINETABLE(size) \
SINETABLE_CONST DECLARE_ALIGNED(32, INTFLOAT, AAC_RENAME(ff_sine_##size))[size]
#define SINETABLE120960(size) \
DECLARE_ALIGNED(32, INTFLOAT, AAC_RENAME(ff_sine_##size))[size]
/**
* Generate a sine window.
* @param window pointer to half window
@ -52,11 +55,11 @@ void AAC_RENAME(ff_init_ff_sine_windows)(int index);
extern SINETABLE( 32);
extern SINETABLE( 64);
extern SINETABLE( 120);
extern SINETABLE120960(120);
extern SINETABLE( 128);
extern SINETABLE( 256);
extern SINETABLE( 512);
extern SINETABLE( 960);
extern SINETABLE120960(960);
extern SINETABLE(1024);
extern SINETABLE(2048);
extern SINETABLE(4096);

View File

@ -32,8 +32,8 @@
#include "libavutil/common.h"
#if !USE_FIXED
SINETABLE( 120);
SINETABLE( 960);
SINETABLE120960(120);
SINETABLE120960(960);
#endif
#if !CONFIG_HARDCODED_TABLES
SINETABLE( 32);

View File

@ -33,6 +33,8 @@
#define SINETABLE_CONST
#define SINETABLE(size) \
INTFLOAT AAC_RENAME(ff_sine_##size)[size]
#define SINETABLE120960(size) \
INTFLOAT AAC_RENAME(ff_sine_##size)[size]
#define FF_ARRAY_ELEMS(a) (sizeof(a) / sizeof((a)[0]))
#include "sinewin_tablegen.h"
#include "tableprint.h"

View File

@ -29,7 +29,7 @@
#define LIBAVCODEC_VERSION_MAJOR 58
#define LIBAVCODEC_VERSION_MINOR 33
#define LIBAVCODEC_VERSION_MICRO 101
#define LIBAVCODEC_VERSION_MICRO 102
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
LIBAVCODEC_VERSION_MINOR, \