aboutdialog: Update precondition checks for new licenses added in 3.24.20

To avoid making this mistake again, add a static assertion that the
enum is in sync with gtk_license_info, and use the length of
gtk_license_info for the precondition check.

Signed-off-by: Simon McVittie <smcv@debian.org>
Resolves: #2734
This commit is contained in:
Simon McVittie 2020-05-11 17:12:08 +00:00
parent 7ae1d9d796
commit 6451250b2e

View File

@ -135,6 +135,9 @@ static const LicenseInfo gtk_license_info [] = {
{ N_("Apache License, Version 2.0"), "https://opensource.org/licenses/Apache-2.0" }, { N_("Apache License, Version 2.0"), "https://opensource.org/licenses/Apache-2.0" },
{ N_("Mozilla Public License 2.0"), "https://opensource.org/licenses/MPL-2.0" } { N_("Mozilla Public License 2.0"), "https://opensource.org/licenses/MPL-2.0" }
}; };
/* Keep this static assertion updated with the last element of the
* enumeration, and make sure it matches the last element of the array */
G_STATIC_ASSERT (G_N_ELEMENTS (gtk_license_info) - 1 == GTK_LICENSE_MPL_2_0);
typedef struct typedef struct
{ {
@ -2345,7 +2348,7 @@ gtk_about_dialog_set_license_type (GtkAboutDialog *about,
{ {
g_return_if_fail (GTK_IS_ABOUT_DIALOG (about)); g_return_if_fail (GTK_IS_ABOUT_DIALOG (about));
g_return_if_fail (license_type >= GTK_LICENSE_UNKNOWN && g_return_if_fail (license_type >= GTK_LICENSE_UNKNOWN &&
license_type <= GTK_LICENSE_AGPL_3_0_ONLY); license_type < G_N_ELEMENTS (gtk_license_info));
if (about->license_type != license_type) if (about->license_type != license_type)
{ {