Fix a segfault in certain nonsensical group configurations.
authorSteinar H. Gunderson <sgunderson@bigfoot.com>
Sun, 19 Feb 2012 19:16:19 +0000 (20:16 +0100)
committerSteinar H. Gunderson <sgunderson@bigfoot.com>
Sun, 19 Feb 2012 19:16:19 +0000 (20:16 +0100)
bigscreen/groupscreen.cpp

index ab3ca54..1fee290 100644 (file)
@@ -534,7 +534,11 @@ void GroupScreen::draw_next_up_player(unsigned char *buf, const Group &group, co
                                tmp.push_back(max_score[i]);
                        }
                        std::sort(tmp.begin(), tmp.end());
-                       qualify_beat_worst_case = tmp[tmp.size() - group.num_qualifying];
+                       if (tmp.size() > group.num_qualifying) {
+                               qualify_beat_worst_case = tmp[tmp.size() - group.num_qualifying];
+                       } else {
+                               qualify_beat_worst_case = 0;
+                       }
 
                        std::vector<unsigned> tmp2;
                        for (unsigned i = 0; i < group.players.size(); ++i) {
@@ -544,7 +548,11 @@ void GroupScreen::draw_next_up_player(unsigned char *buf, const Group &group, co
                        }
 
                        std::sort(tmp2.begin(), tmp2.end());
-                       qualify_beat_best_case = tmp2[tmp2.size() - group.num_qualifying];
+                       if (tmp2.size() > group.num_qualifying) {
+                               qualify_beat_best_case = tmp2[tmp2.size() - group.num_qualifying];
+                       } else {
+                               qualify_beat_best_case = 0;
+                       }
                }
 
                // print out the lines we can attain