From 3b5aee3f93c5f620a7f5b1777dbc6cf33b74e7ca Mon Sep 17 00:00:00 2001 From: Petter Reinholdtsen <pere@debian.org> Date: Sun, 9 Mar 2025 07:34:52 +0100 Subject: [PATCH] Dropped self assignment when initialising variables in tokenize.c. The 'int x=x' style statement do not make sense and cause problems with some compilers. Replace it with more sensible initializers to ensure the value have a well known starting point. Using initializers proposed by Timothy B. Terriberry in !25. Added -Werror=uninitialized -Winit-self to default GCC build to ensure this style of statement do not sneak into the code again. Fixes #2317 --- configure.ac | 6 +++--- lib/tokenize.c | 16 ++++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/configure.ac b/configure.ac index fb5d9b25..d4d1fd02 100644 --- a/configure.ac +++ b/configure.ac @@ -189,9 +189,9 @@ else case $host in *) - DEBUG="-g -Wall -Wno-parentheses -DDEBUG -D__NO_MATH_INLINES" - CFLAGS="-Wall -Wno-parentheses -O3 -fomit-frame-pointer -finline-functions -funroll-loops" - PROFILE="-Wall -Wno-parentheses -pg -g -O3 -fno-inline-functions -DDEBUG";; + DEBUG="-g -Wall -Werror=uninitialized -Winit-self -Wno-parentheses -DDEBUG -D__NO_MATH_INLINES" + CFLAGS="-Wall -Werror=uninitialized -Winit-self -Wno-parentheses -O3 -fomit-frame-pointer -finline-functions -funroll-loops" + PROFILE="-Wall -Werror=uninitialized -Winit-self -Wno-parentheses -pg -g -O3 -fno-inline-functions -DDEBUG";; esac fi CFLAGS="$CFLAGS $cflags_save" diff --git a/lib/tokenize.c b/lib/tokenize.c index 57b7aa8d..dee162c8 100644 --- a/lib/tokenize.c +++ b/lib/tokenize.c @@ -487,11 +487,11 @@ int oc_enc_tokenize_ac(oc_enc_ctx *_enc,int _pli,ptrdiff_t _fragi, zzj=64; for(zzi=OC_MINI(_zzi,63);zzi>0;zzi--){ ogg_uint32_t best_cost; - int best_bits=best_bits; - int best_next=best_next; - int best_token=best_token; - int best_eb=best_eb; - int best_qc=best_qc; + int best_bits=INT_MAX; + int best_next=INT_MAX; + int best_token=INT_MAX; + int best_eb=INT_MAX; + int best_qc=INT_MAX; ogg_uint32_t d2; int dq; int qc_m; @@ -1091,8 +1091,8 @@ void oc_enc_tokenize_dc_frag_list(oc_enc_ctx *_enc,int _pli, int neobs1; int token; int eb; - int token1=token1; - int eb1=eb1; + int token1=OC_DCT_ZRL_TOKEN; + int eb1=INT_MAX; /*Return immediately if there are no coded fragments; otherwise we'd flush any trailing EOB run into the AC 1 list and never read it back out.*/ if(_ncoded_fragis<=0)return; @@ -1328,7 +1328,7 @@ void oc_enc_tokenize_finish(oc_enc_ctx *_enc){ int new_eb; int zzj; int plj; - ptrdiff_t ti=ti; + ptrdiff_t ti=-1; int run_count; /*Make sure this coefficient has tokens at all.*/ if(_enc->ndct_tokens[pli][zzi]<=0)continue; -- GitLab