[FFmpeg-devel] [PATCH]lswr/rematrix: Remove an aggressive loop optimization / undefined behaviour

Carl Eugen Hoyos cehoyos at ag.or.at
Fri Feb 24 12:21:54 EET 2017


Hi!

Attached patch fixes a gcc warning (tested 6.3.0).

Please comment, Carl Eugen
-------------- next part --------------
From 422e4b2fba6f3c9fbf930908474029cb8088bc46 Mon Sep 17 00:00:00 2001
From: Carl Eugen Hoyos <cehoyos at ag.or.at>
Date: Fri, 24 Feb 2017 11:16:26 +0100
Subject: [PATCH] lswr/rematrix: Remove an aggressive loop optimization.

Fixes undefined behaviour and a gcc warning:
libswresample/rematrix.c:376:47: warning: iteration 64 invokes undefined behavior
---
 libswresample/rematrix.c |    7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/libswresample/rematrix.c b/libswresample/rematrix.c
index 4721063..03b9b20 100644
--- a/libswresample/rematrix.c
+++ b/libswresample/rematrix.c
@@ -371,9 +371,10 @@ av_cold static int auto_matrix(SwrContext *s)
                            s->matrix[1] - s->matrix[0], s->matrix_encoding, s);
 
     if (ret >= 0 && s->int_sample_fmt == AV_SAMPLE_FMT_FLTP) {
-        int i;
-        for (i = 0; i < FF_ARRAY_ELEMS(s->matrix[0])*FF_ARRAY_ELEMS(s->matrix[0]); i++)
-            s->matrix_flt[0][i] = s->matrix[0][i];
+        int i, j;
+        for (i = 0; i < FF_ARRAY_ELEMS(s->matrix[0]); i++)
+            for (j = 0; j < FF_ARRAY_ELEMS(s->matrix[0]); j++)
+                s->matrix_flt[i][j] = s->matrix[i][j];
     }
 
     return ret;
-- 
1.7.10.4



More information about the ffmpeg-devel mailing list