From 6451250b2e29ab4881fccc4e271a1cdbb8e923bb Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Mon, 11 May 2020 17:12:08 +0000 Subject: [PATCH] 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 Resolves: #2734 --- gtk/gtkaboutdialog.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gtk/gtkaboutdialog.c b/gtk/gtkaboutdialog.c index 1c33631696..94aeabefb6 100644 --- a/gtk/gtkaboutdialog.c +++ b/gtk/gtkaboutdialog.c @@ -135,6 +135,9 @@ static const LicenseInfo gtk_license_info [] = { { 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" } }; +/* 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 { @@ -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 (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) {