diff --git a/gtk4-gcc11.patch b/gtk4-gcc11.patch new file mode 100644 index 0000000..0071e46 --- /dev/null +++ b/gtk4-gcc11.patch @@ -0,0 +1,72 @@ +diff --git a/gtk/gtktextchild.c b/gtk/gtktextchild.c +index 4d5e30e..915b991 100644 +--- a/gtk/gtktextchild.c ++++ b/gtk/gtktextchild.c +@@ -169,6 +169,12 @@ const GtkTextLineSegmentClass gtk_text_paintable_type = { + GtkTextLineSegment * + _gtk_paintable_segment_new (GdkPaintable *paintable) + { ++ /* gcc-11 issues a diagnostic here because the size allocated ++ for SEG does not cover the entire size of a GtkTextLineSegment ++ and gcc has no way to know that the union will only be used ++ for limited types and the additional space is not needed. */ ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Warray-bounds" + GtkTextLineSegment *seg; + guint flags; + +@@ -204,6 +210,7 @@ _gtk_paintable_segment_new (GdkPaintable *paintable) + g_object_ref (paintable); + + return seg; ++#pragma GCC diagnostic pop + } + + +@@ -280,6 +287,12 @@ const GtkTextLineSegmentClass gtk_text_child_type = { + GtkTextLineSegment * + _gtk_widget_segment_new (GtkTextChildAnchor *anchor) + { ++ /* gcc-11 issues a diagnostic here because the size allocated ++ for SEG does not cover the entire size of a GtkTextLineSegment ++ and gcc has no way to know that the union will only be used ++ for limited types and the additional space is not needed. */ ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Warray-bounds" + GtkTextLineSegment *seg; + + seg = g_slice_alloc (WIDGET_SEG_SIZE); +@@ -303,6 +316,7 @@ _gtk_widget_segment_new (GtkTextChildAnchor *anchor) + g_object_ref (anchor); + + return seg; ++#pragma GCC diagnostic pop + } + + void +diff --git a/gtk/gtktextsegment.c b/gtk/gtktextsegment.c +index a202ab6..aaac291 100644 +--- a/gtk/gtktextsegment.c ++++ b/gtk/gtktextsegment.c +@@ -425,6 +425,13 @@ char_segment_check_func (GtkTextLineSegment *segPtr, GtkTextLine *line) + GtkTextLineSegment* + _gtk_toggle_segment_new (GtkTextTagInfo *info, gboolean on) + { ++ /* gcc-11 issues a diagnostic here because the size allocated ++ for SEG does not cover the entire size of a GtkTextLineSegment ++ and gcc has no way to know that the union will only be used ++ for limited types and the additional space is not needed. */ ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Warray-bounds" ++ + GtkTextLineSegment *seg; + + seg = g_slice_alloc (TSEG_SIZE); +@@ -440,6 +447,7 @@ _gtk_toggle_segment_new (GtkTextTagInfo *info, gboolean on) + seg->body.toggle.inNodeCounts = 0; + + return seg; ++#pragma GCC diagnostic pop + } + + void diff --git a/gtk4.spec b/gtk4.spec index 8f114bc..00061b4 100644 --- a/gtk4.spec +++ b/gtk4.spec @@ -23,6 +23,7 @@ Summary: GTK graphical user interface library License: LGPLv2+ URL: https://www.gtk.org Source0: https://download.gnome.org/sources/gtk/4.0/gtk-%{version}.tar.xz +Patch0: gtk4-gcc11.patch BuildRequires: cups-devel BuildRequires: desktop-file-utils