diff --git a/src/corelib/time/qtimezonelocale_data_p.h b/src/corelib/time/qtimezonelocale_data_p.h index a90ba954de0..b85618ebcc2 100644 --- a/src/corelib/time/qtimezonelocale_data_p.h +++ b/src/corelib/time/qtimezonelocale_data_p.h @@ -58,8 +58,8 @@ namespace QtTimeZoneLocale { // GENERATED PART STARTS HERE /* - This part of the file was generated on 2025-01-13 from the - Common Locale Data Repository v46 + This part of the file was generated on 2025-02-07 from the + Common Locale Data Repository v46.1 http://www.unicode.org/cldr/ @@ -51631,6 +51631,7 @@ static inline constexpr LocaleZoneExemplar localeZoneExemplarTable[] = { { 681, 7211, 467, 7, }, // Indian/Reunion { 681, 3157, 474, 5, }, // Pacific/Chuuk { 681, 3096, 479, 7, }, // Pacific/Pohnpei + { 682, 0, 0, 0, } // Terminal row }; // Exemplar city table // Sorted by locale index, then iana name @@ -52492,6 +52493,7 @@ static inline constexpr LocaleZoneNames localeZoneNameTable[] = { { 678, 2501, 0, 0, 8483, 0, 0, 0, 0, 0, 19, 0, 0, 0, }, // Europe/London { 679, 2455, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, }, // Etc/UTC Kara-Kalpak/Cyrillic/Uzbekistan { 681, 2455, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, }, // Etc/UTC Swampy Cree/Canadian Aboriginal/Canada + { 682, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } // Terminal row }; // Zone naming table // Sorted by locale index, then meta key @@ -79720,6 +79722,7 @@ static inline constexpr LocaleMetaZoneLongNames localeMetaZoneLongNameTable[] = { 678, 1862, 787179, 787194, 787219, 15, 25, 21, }, // Yakutsk { 678, 1870, 787240, 787260, 787290, 20, 30, 26, }, // Yekaterinburg { 681, 788, 0, 979873, 0, 0, 20, 0, }, // GMT Swampy Cree/Canadian Aboriginal/Canada + { 682, 0, 0, 0, 0, 0, 0, 0, } // Terminal row }; // Metazone long name table // Sorted by locale index, then meta key @@ -81366,6 +81369,7 @@ static inline constexpr LocaleMetaZoneShortNames localeMetaZoneShortNameTable[] { 656, 135, 153, 153, 156, 3, 3, 4, }, // Amazon { 656, 437, 376, 376, 379, 3, 3, 4, }, // Brasilia { 672, 788, 0, 1868, 0, 0, 2, 0, }, // GMT Anii/Latin/Benin + { 682, 0, 0, 0, 0, 0, 0, 0, } // Terminal Row }; // Metazone short name table // Indexing matches that of locale_data in qlocale_data_p.h diff --git a/util/locale_database/qlocalexml2cpp.py b/util/locale_database/qlocalexml2cpp.py index b51e95930c4..7f2e05c8a17 100755 --- a/util/locale_database/qlocalexml2cpp.py +++ b/util/locale_database/qlocalexml2cpp.py @@ -401,6 +401,10 @@ class LocaleZoneDataWriter (LocaleSourceEditor): def localeData(self, locales: dict[tuple[int, int, int], Locale], names: list[tuple[int, int, int]]) -> None: + assert len(names) == len(locales), 'Names should just be a sorted list of locale.keys()' + # Tables need a terminal row whose localeIndex is len(names) for the + # sake of an assertion in QTZL.cpp's findTableEntryFor(); the end() of + # each locale's range of rows must be a valid row. out: Callable[[str], int] = self.writer.write out('// Sorted by locale index, then iana name\n') @@ -425,7 +429,8 @@ class LocaleZoneDataWriter (LocaleSourceEditor): if index == locale.exemplarStart else f', // {name}\n') ) index += 1 - out('}; // Exemplar city table\n') + out(formatLine(len(names), 0, 0, 0) + ' // Terminal row\n' + + '}; // Exemplar city table\n') if index >= (1 << 32): raise Error(f'Exemplar table has too many ({index}) entries') exemplarRowCount: int = index @@ -462,7 +467,8 @@ class LocaleZoneDataWriter (LocaleSourceEditor): if index == locale.zoneStart else f', // {name}\n') ) index += 1 - out('}; // Zone naming table\n') + out(formatLine(*((len(names), 0) + (0, 0) * 6)) + ' // Terminal row\n' + + '}; // Zone naming table\n') if index >= (1 << 16): raise Error(f'Zone naming table has too many ({index}) entries') localeNameCount: int = index @@ -504,7 +510,8 @@ class LocaleZoneDataWriter (LocaleSourceEditor): if index == locale.metaZoneLongStart else f', // {meta}\n') ) index += 1 - out('}; // Metazone long name table\n') + out(formatLine(*((len(names), 0) + (0, 0) * 3)) + ' // Terminal row\n' + + '}; // Metazone long name table\n') if index >= (1 << 32): raise Error(f'Metazone long name table has too many ({index}) entries') metaLongCount: int = index @@ -540,7 +547,8 @@ class LocaleZoneDataWriter (LocaleSourceEditor): if index == locale.metaZoneShortStart else f', // {meta}\n') ) index += 1 - out('}; // Metazone short name table\n') + out(formatLine(*((len(names), 0) + (0, 0) * 3)) + ' // Terminal Row\n' + + '}; // Metazone short name table\n') if index >= (1 << 16): raise Error(f'Metazone short name table has too many ({index}) entries') metaShortCount: int = index