From 6bf8b047640e9e8af726f21f146876c2c1f26f8d Mon Sep 17 00:00:00 2001
From: Vitor Sessak <vitor1001@gmail.com>
Date: Wed, 23 Jul 2008 03:55:37 +0000
Subject: [PATCH] When picking a "high utility centroid" do not pick one that
 has no corresponding points. Not only it is the worst possible pick, but also
 the code was written without this case in mind.

Originally committed as revision 14341 to svn://svn.ffmpeg.org/ffmpeg/trunk
---
 libavcodec/elbg.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/libavcodec/elbg.c b/libavcodec/elbg.c
index 9f8ed221a43..d56a0c3573a 100644
--- a/libavcodec/elbg.c
+++ b/libavcodec/elbg.c
@@ -105,9 +105,12 @@ static int get_high_utility_cell(elbg_data *elbg)
 {
     int i=0;
     /* Using linear search, do binary if it ever turns to be speed critical */
-    int r = av_random(elbg->rand_state)%elbg->utility_inc[elbg->numCB-1];
+    int r = av_random(elbg->rand_state)%(elbg->utility_inc[elbg->numCB-1]-1) + 1;
     while (elbg->utility_inc[i] < r)
         i++;
+
+    assert(!elbg->cells[i]);
+
     return i;
 }
 
-- 
GitLab