|
@@ -0,0 +1,75 @@
|
|
|
+From aee0664e6f1a29e0d5f301979f6d168b08435a61 Mon Sep 17 00:00:00 2001
|
|
|
+From: Philip Withnall <pwithnall@gnome.org>
|
|
|
+Date: Mon, 10 Mar 2025 15:21:15 +0000
|
|
|
+Subject: [PATCH] girparser: Ignore new doc:format element in GIR files
|
|
|
+MIME-Version: 1.0
|
|
|
+Content-Type: text/plain; charset=UTF-8
|
|
|
+Content-Transfer-Encoding: 8bit
|
|
|
+
|
|
|
+As of gobject-introspection 1.83.2, a new `<doc:format name="…"/>`
|
|
|
+element is supported (as a child of `<repository>`) in GIR files.
|
|
|
+
|
|
|
+For the moment, this information isn’t needed in libgirepository — but
|
|
|
+the GIR parser does have to know about the element in order to not throw
|
|
|
+an error claiming it’s invalid.
|
|
|
+
|
|
|
+This is a slightly tweaked version of the code added to
|
|
|
+gobject-introspection.git in commit
|
|
|
+9544cd6c962fab2c3203898779948309833e2439 by Corentin Noël
|
|
|
+<corentin.noel@collabora.com>, reformatted slightly to fit in with
|
|
|
+GLib’s style guidelines.
|
|
|
+
|
|
|
+This is backwards compatible and does not require a new
|
|
|
+gobject-introspection version.
|
|
|
+
|
|
|
+Signed-off-by: Philip Withnall <pwithnall@gnome.org>
|
|
|
+
|
|
|
+Fixes: #3634
|
|
|
+
|
|
|
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/commit/aee0664e6f1a29e0d5f301979f6d168b08435a61.patch]
|
|
|
+
|
|
|
+Signed-off-by: Markus Volk <f_l_k@t-online.de>
|
|
|
+---
|
|
|
+ girepository/girparser.c | 12 +++++++++++-
|
|
|
+ 1 file changed, 11 insertions(+), 1 deletion(-)
|
|
|
+
|
|
|
+diff --git a/girepository/girparser.c b/girepository/girparser.c
|
|
|
+index 63143718d9..be88d871a4 100644
|
|
|
+--- a/girepository/girparser.c
|
|
|
++++ b/girepository/girparser.c
|
|
|
+@@ -107,7 +107,8 @@ typedef enum
|
|
|
+ STATE_ALIAS,
|
|
|
+ STATE_TYPE,
|
|
|
+ STATE_ATTRIBUTE,
|
|
|
+- STATE_PASSTHROUGH
|
|
|
++ STATE_PASSTHROUGH,
|
|
|
++ STATE_DOC_FORMAT, /* 35 */
|
|
|
+ } ParseState;
|
|
|
+
|
|
|
+ typedef struct _ParseContext ParseContext;
|
|
|
+@@ -3159,6 +3160,11 @@ start_element_handler (GMarkupParseContext *context,
|
|
|
+ state_switch (ctx, STATE_PASSTHROUGH);
|
|
|
+ goto out;
|
|
|
+ }
|
|
|
++ else if (strcmp ("doc:format", element_name) == 0)
|
|
|
++ {
|
|
|
++ state_switch (ctx, STATE_DOC_FORMAT);
|
|
|
++ goto out;
|
|
|
++ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case 'e':
|
|
|
+@@ -3843,6 +3849,10 @@ end_element_handler (GMarkupParseContext *context,
|
|
|
+ state_switch (ctx, ctx->prev_state);
|
|
|
+ }
|
|
|
+ break;
|
|
|
++ case STATE_DOC_FORMAT:
|
|
|
++ if (require_end_element (context, ctx, "doc:format", element_name, error))
|
|
|
++ state_switch (ctx, STATE_REPOSITORY);
|
|
|
++ break;
|
|
|
+
|
|
|
+ case STATE_PASSTHROUGH:
|
|
|
+ ctx->unknown_depth -= 1;
|
|
|
+--
|
|
|
+GitLab
|
|
|
+
|