Re: [xslt] Release of libxslt-1.0.10



In message <20020114135014.H21595@redhat.com>
          Daniel Veillard <veillard@redhat.com> wrote:

>   Available at:
>     ftp://xmlsoft.org/ and Gnome FTP mirrors soon
>     http://xmlsoft.org/
>
> After one month since the last release, an update was needed:
>
> * Windows fixes for Win32 from Igor
> * Fixed the Solaris compilation trouble (Albert)
> * Documentation changes and updates: John Fleck
> * Added a stringparam option to avoid escaping hell at the shell level
> * A few bug fixes

I get a compilation failure on RISC OS at transform.c: 3321 :

--8<--------
static xmlDocPtr
xsltApplyStylesheetInternal(xsltStylesheetPtr style, xmlDocPtr doc,
                            const char **params, const char *output,
                            FILE * profile, xsltTransformContextPtr userCtxt)
{
[snipped]
	/*
	 * Avoid hitting the DTD when scanning nodes
	 * but keep it linked as doc->intSubset
	 */
==>	xmlNodePtr cur = doc->intSubset;
	if (cur->next != NULL)
	    cur->next->prev = cur->prev;
--8<--------

Indicated section gives :

"c.transform", line 3321: Error: '=': implicit cast of pointer to non-equal pointer

In tree.h in libxml2, where the type of xmlDocPtr is declared :

--8<--------
typedef struct _xmlDoc xmlDoc;
typedef xmlDoc *xmlDocPtr;
struct _xmlDoc {
    void           *_private;	/* application data */
    xmlElementType  type;       /* XML_DOCUMENT_NODE, must be second ! */
    char           *name;	/* name/filename/URI of the document */
    struct _xmlNode *children;	/* the document tree */
    struct _xmlNode *last;	/* last child link */
    struct _xmlNode *parent;	/* child->parent link */
    struct _xmlNode *next;	/* next sibling link  */
    struct _xmlNode *prev;	/* previous sibling link  */
    struct _xmlDoc  *doc;	/* autoreference to itself */

    /* End of common part */
    int             compression;/* level of zlib compression */
    int             standalone; /* standalone document (no external refs) */
    struct _xmlDtd  *intSubset;	/* the document internal subset */
    struct _xmlDtd  *extSubset;	/* the document external subset */
    struct _xmlNs   *oldNs;	/* Global namespace, the old way */
    const xmlChar  *version;	/* the XML version string */
    const xmlChar  *encoding;   /* external initial encoding, if any */
    void           *ids;        /* Hash table for ID attributes if any */
    void           *refs;       /* Hash table for IDREFs attributes if any */
    const xmlChar  *URL;	/* The URI for that document */
    int             charset;    /* encoding of the in-memory content
				   actually an xmlCharEncoding */
};
--8<--------

The error is stating that 'struct _xmlDtd *intSubset' cannot be assigned to
'xmlNodePtr cur' without a cast.

A brief look at these two structures indicates that they have a common
initial section which probably means that they will be binary compatible
even though the compiler has faulted the use of these names.

I *assume* that xmlNodePtr was written accidentally, and xmlDtdPtr was
intended. With the Norcroft compiler in its default configuration, this
fault immediately terminates compilation and so is very obvious.

I'm holding off a RISC OS release because although I believe my above
summary to be correct, I could just as easily have been talking complete
rubbish.

With the exception of that, everything else seems to work just fine with the
RISC OS version of xsltproc, AFAICT.

-- 
Gerph {djf0-.3w6e2w2.226,6q6w2q2,2.3,2m4}
URL: http://www.movspclr.co.uk/
... Eyes to the heavens, screaming at the sky;
    Trying to send you messages, but choking on goodbye.



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