[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