Re: [xml] Binary incompatibility with libxml2-2.2.8



On Sun, Mar 11, 2001 at 04:48:03PM -0800, Wayne Davison wrote:
A recent change was made to the struct "_htmlElemDesc" -- several
ints were turned into chars.  While this structure is supposedly
"internal", there is a public accessor function available (namely
htmlTagLookup()), and the structure's elements are also publicly
known (since they are defined in the installed HTMLparser.h file).

Unfortunately, I had an application that was looking up tags and
checking the "empty" flag to see what HTML 4.0 elements have no
close tag.  Since there are no accessor functions for this
structure, I had accessed the "empty" variable directly.  Due to
the above change, an application compiled with a modern libxml2
will fail to run properly with an older (2.2.8) shared library
and via versa.

  Oops, I try to preserve binary compatibility. But i had to add
a new field to the structure, so accessing the array whould break
anyway. I was stuck not being able to fix the bug otherwise, so
between a binary incompatibility potentially affecting few users
and a bug fix, I selected the bug fix, sorry someone got stuck.

So, my question is what should we do about this?  Should the
structure's contents really be defined in a public .h file?  Or

  In theory no, and I try to avoid this now in generic objects
like lists or hash tables. In practice, I still think I prefer
exposing the object content especially when I know that my API
is probably not good enough.

should it only be defined in a header file that is internal to
libxml2.  Also, do we want any accessor functions to allow the
user to look at the attributes of an HTML tag?

  If you think you have a good API in mind, yep send it i will
add it.

Daniel

-- 
Daniel Veillard      | Red Hat Network http://redhat.com/products/network/
veillard redhat com  | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
http://veillard.com/ | Rpmfind RPM search engine http://rpmfind.net/




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]