[Debian GNUstep maintainers] Bug#1073313: gnustep-base: FTBFS: GSXML.m:2674:22: error: ‘xmlEntity’ {aka ‘struct _xmlEntity’} has no member named ‘checked’

Thorsten Glaser t.glaser at qvest-digital.com
Sun Jun 16 18:03:34 BST 2024


On Sun, 16 Jun 2024, Yavor Doganov wrote:

>IMVHO removing a public struct member constitutes an API break.

Definitely. I just took a peek at this.

>It is also an ABI break, because if a program or a library accesses
>such member and is compiled against an old libxml2 version that is
>supposed to be ABI-compatible (like 2.9.14+dfsg-1.3 in trixie), it
>will crash at runtime with the new library version.

I thought “could be, could be not” from:

@@ -56,10 +58,8 @@ struct _xmlEntity {
     struct _xmlEntity     *nexte;      /* unused */
     const xmlChar           *URI;      /* the full URI as computed */
     int                    owner;      /* does the entity own the childrens */
-    int                         checked;       /* was the entity content checked */
-                                       /* this is also used to count entities
-                                        * references done from that entity
-                                        * and if it contains '<' */
+    int                    flags;       /* various flags */
+    unsigned long   expandedSize;       /* expanded size */
 };
 
 /*

… but then I looked at the git history and saw:

commit f34f184f8e957e6f9a6eda9859ce85e883c77e5f
Author: Nick Wellnhofer <wellnhofer at aevum.de>
Date:   Mon Dec 19 15:24:53 2022 +0100

    entities: Add "flags" member to struct xmlEntity
    
    This will hold various flags and eventually replace the "checked"
    member.

[…]
--- a/include/libxml/entities.h
+++ b/include/libxml/entities.h
@@ -60,6 +60,7 @@ struct _xmlEntity {
                                        /* this is also used to count entities
                                         * references done from that entity
                                         * and if it contains '<' */
+    int                    flags;       /* various flags */
 };
 
 /*

This is not the first time in *very* recent history that libxml2
has an ABI break (e.g. LibreOffice ran into that), and… I wonder
what kind of shitshow upstream runs when they commit things like
that‽

commit ce76ebfd1312459951d555ad9d87fb9a89eede55
Author: Nick Wellnhofer <wellnhofer at aevum.de>
Date:   Mon Dec 19 20:56:23 2022 +0100

    entities: Stop counting entities
    
    This was only used in the old version of xmlParserEntityCheck.

[…]
--- a/include/libxml/entities.h
+++ b/include/libxml/entities.h
@@ -56,10 +56,6 @@ struct _xmlEntity {
     struct _xmlEntity     *nexte;      /* unused */
     const xmlChar           *URI;      /* the full URI as computed */
     int                    owner;      /* does the entity own the childrens */
-    int                         checked;       /* was the entity content checked */
-                                       /* this is also used to count entities
-                                        * references done from that entity
-                                        * and if it contains '<' */
     int                    flags;       /* various flags */
     unsigned long   expandedSize;       /* expanded size */
 };

Looking at the other context in that commit, the “flags” member
definitely does *not* replace the “checked” member in a compatible
way. Rather, the functionality that used to be behind “checked”
is gone in its entirety.

bye,
//mirabilos
-- 
Infrastrukturexperte • Qvest Digital AG
Am Dickobskreuz 10, D-53121 Bonn • https://www.qvest-digital.com/
Telephon +49 228 54881-393 • Fax: +49 228 54881-235
HRB AG Bonn 18196 • USt-ID (VAT): DE274355441
Vorstand: Dr. Stefan Barth, Kai Ebenrett, Boris Esser, Alexander Steeg
Vorsitzender Aufsichtsrat: Peter Nöthen



More information about the pkg-GNUstep-maintainers mailing list