QKeySequence: Fix the one-off error in the mac glyph array size

It seems that the size of the corresponding array in the code has a one-off
error. This is now fixed.

The end of the array passed to lower_bound is wrong because the
hard-coded size is size + 1. However, the end is array + size. This is
what lower_bound expects from an array. Or any other algorithm for that
matter expecting the end of a container as an argument.

This can cause issues with something like lower_bound because a
potential "empty" fill is not sorted as lower_bound would expect the
data structure.

It could have been fixed by decreasing the size by one, however it is a more
future-proof solution to avoid hard-coding the size and just use
std::size(array) instead.

Pick-to: 5.15 6.2 6.3
Change-Id: I1d25a5b1a80a3b2634b229e0718108ad5e7808a0
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
This commit is contained in:
Laszlo Papp 2022-05-14 17:56:13 +01:00
parent 7c76064604
commit 5d8f815e10

View File

@ -73,8 +73,7 @@ static const int kControlUnicode = 0x2303;
static const int kOptionUnicode = 0x2325;
static const int kCommandUnicode = 0x2318;
static const int NumEntries = 21;
static const MacSpecialKey entries[NumEntries] = {
static const MacSpecialKey entries[] = {
{ Qt::Key_Escape, 0x238B },
{ Qt::Key_Tab, 0x21E5 },
{ Qt::Key_Backtab, 0x21E4 },
@ -96,6 +95,7 @@ static const MacSpecialKey entries[NumEntries] = {
{ Qt::Key_Alt, kOptionUnicode },
{ Qt::Key_CapsLock, 0x21EA },
};
static const int NumEntries = std::size(entries);
static bool operator<(const MacSpecialKey &entry, int key)
{