diff --git a/ChangeLog b/ChangeLog index 8a7baaaa..b1ef31e7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +Sun Jan 18 21:48:28 CET 2009 Daniel Veillard + + * include/libxml/parser.h include/libxml/xmlwriter.h + include/libxml/relaxng.h include/libxml/xmlversion.h.in + include/libxml/xmlwin32version.h.in include/libxml/valid.h + include/libxml/xmlschemas.h include/libxml/xmlerror.h: + port patch from Marcus Meissner to add gcc checking for + printf like functions parameters, should fix #65068 + * doc/apibuild.py doc/*: modified the script accordingly + and regenerated + * xpath.c xmlmemory.c threads.c: fix a few warnings + Sun Jan 18 20:40:42 CET 2009 Daniel Veillard * include/libxml/xmlwin32version.h.in: windows header should diff --git a/doc/apibuild.py b/doc/apibuild.py index 36870dad..b7fa22e3 100755 --- a/doc/apibuild.py +++ b/doc/apibuild.py @@ -72,7 +72,8 @@ ignored_words = { "ATTRIBUTE_UNUSED": (0, "macro keyword"), "LIBEXSLT_PUBLIC": (0, "macro keyword"), "X_IN_Y": (5, "macro function builder"), - "ATTRIBUTE_ALLOC_SIZE": (3, "macro for gcc chaking extension"), + "ATTRIBUTE_ALLOC_SIZE": (3, "macro for gcc checking extension"), + "ATTRIBUTE_PRINTF": (5, "macro for gcc printf args checking extension"), } def escape(raw): diff --git a/doc/devhelp/libxml2-parserInternals.html b/doc/devhelp/libxml2-parserInternals.html index 4b9bb0d9..5cb01491 100644 --- a/doc/devhelp/libxml2-parserInternals.html +++ b/doc/devhelp/libxml2-parserInternals.html @@ -268,7 +268,7 @@ void xmlParseEntityDecl (

Macro XML_MAX_TEXT_LENGHT

#define XML_MAX_TEXT_LENGHT;
-

+

Maximum size allowed for a single text node when building a tree. This is not a limitation of the parser but a safety boundary feature, use XML_PARSE_HUGE option to override it.


Macro XML_SUBSTITUTE_BOTH

#define XML_SUBSTITUTE_BOTH;
diff --git a/doc/devhelp/libxml2-xmlversion.html b/doc/devhelp/libxml2-xmlversion.html
index 6a3a0897..28cc5a86 100644
--- a/doc/devhelp/libxml2-xmlversion.html
+++ b/doc/devhelp/libxml2-xmlversion.html
@@ -44,7 +44,7 @@
     

Synopsis

#define LIBXML_VERSION_EXTRA;
-#define LIBXML_MODULES_ENABLED;
+#define LIBXML_DOCB_ENABLED;
 #define LIBXML_LEGACY_ENABLED;
 #define LIBXML_READER_ENABLED;
 #define LIBXML_THREAD_ENABLED;
@@ -53,8 +53,8 @@
 #define LIBXML_DEBUG_ENABLED;
 #define LIBXML_XINCLUDE_ENABLED;
 #define ATTRIBUTE_UNUSED;
-#define LIBXML_DOCB_ENABLED;
-#define LIBXML_PUSH_ENABLED;
+#define LIBXML_MODULES_ENABLED;
+#define ATTRIBUTE_PRINTF;
 #define LIBXML_SAX1_ENABLED;
 #define WITHOUT_TRIO;
 #define LIBXML_SCHEMATRON_ENABLED;
@@ -70,11 +70,13 @@
 #define LIBXML_MODULE_EXTENSION;
 #define LIBXML_ICONV_ENABLED;
 #define LIBXML_HTML_ENABLED;
+#define LIBXML_WRITER_ENABLED;
 #define LIBXML_UNICODE_ENABLED;
 #define LIBXML_FTP_ENABLED;
 #define LIBXML_AUTOMATA_ENABLED;
 #define LIBXML_ZLIB_ENABLED;
-#define LIBXML_WRITER_ENABLED;
+#define ATTRIBUTE_ALLOC_SIZE;
+#define LIBXML_PUSH_ENABLED;
 #define LIBXML_C14N_ENABLED;
 #define LIBXML_SCHEMAS_ENABLED;
 #define DEBUG_MEMORY_LOCATION;
@@ -93,6 +95,14 @@ void	xmlCheckVersion			(int version);
     

Details

+

Macro ATTRIBUTE_ALLOC_SIZE

#define ATTRIBUTE_ALLOC_SIZE;
+

Macro used to indicate to GCC this is an allocator function

+
+
+

Macro ATTRIBUTE_PRINTF

#define ATTRIBUTE_PRINTF;
+

Macro used to indicate to GCC the parameter are printf like

+
+

Macro ATTRIBUTE_UNUSED

#define ATTRIBUTE_UNUSED;
 

Macro used to signal to GCC unused function parameters

diff --git a/doc/devhelp/libxml2.devhelp b/doc/devhelp/libxml2.devhelp index 68cd0a0c..d3444e3b 100644 --- a/doc/devhelp/libxml2.devhelp +++ b/doc/devhelp/libxml2.devhelp @@ -52,6 +52,8 @@ + + diff --git a/doc/libxml2-api.xml b/doc/libxml2-api.xml index fd559a5c..33b3a5a4 100644 --- a/doc/libxml2-api.xml +++ b/doc/libxml2-api.xml @@ -3336,7 +3336,7 @@ compile-time version informations for the XML library Daniel Veillard - + @@ -3345,8 +3345,8 @@ - - + + @@ -3362,11 +3362,13 @@ + - + + @@ -3766,6 +3768,12 @@ + + Macro used to indicate to GCC this is an allocator function + + + Macro used to indicate to GCC the parameter are printf like + Macro used to signal to GCC unused function parameters @@ -4109,6 +4117,7 @@ Identifiers can be longer, but this will be more costly at runtime. + Maximum size allowed for a single text node when building a tree. This is not a limitation of the parser but a safety boundary feature, use XML_PARSE_HUGE option to override it. Special constant found in SAX2 blocks initialized fields diff --git a/doc/libxml2-refs.xml b/doc/libxml2-refs.xml index 8f42a39b..45b0cd92 100644 --- a/doc/libxml2-refs.xml +++ b/doc/libxml2-refs.xml @@ -1,6 +1,8 @@ + + @@ -3526,6 +3528,8 @@ + + @@ -13782,6 +13786,8 @@ + + @@ -15751,6 +15757,8 @@ + + @@ -16322,6 +16330,9 @@ + + + @@ -18370,6 +18381,9 @@ + + + @@ -18869,6 +18883,7 @@ + @@ -18901,6 +18916,7 @@ + @@ -19566,6 +19582,7 @@ + @@ -19631,6 +19648,7 @@ + @@ -22485,6 +22503,7 @@ + @@ -23632,6 +23651,8 @@ + + @@ -24401,6 +24422,7 @@ + @@ -24422,6 +24444,9 @@ + + + @@ -25776,6 +25801,7 @@ + @@ -25911,6 +25937,7 @@ + @@ -27626,6 +27653,9 @@ + + + @@ -28102,6 +28132,7 @@ + diff --git a/include/libxml/parser.h b/include/libxml/parser.h index 01de128e..567addba 100644 --- a/include/libxml/parser.h +++ b/include/libxml/parser.h @@ -594,7 +594,7 @@ typedef void (*cdataBlockSAXFunc) ( * Display and format a warning messages, callback. */ typedef void (XMLCDECL *warningSAXFunc) (void *ctx, - const char *msg, ...); + const char *msg, ...) ATTRIBUTE_PRINTF(2,3); /** * errorSAXFunc: * @ctx: an XML parser context @@ -604,7 +604,7 @@ typedef void (XMLCDECL *warningSAXFunc) (void *ctx, * Display and format an error messages, callback. */ typedef void (XMLCDECL *errorSAXFunc) (void *ctx, - const char *msg, ...); + const char *msg, ...) ATTRIBUTE_PRINTF(2,3); /** * fatalErrorSAXFunc: * @ctx: an XML parser context @@ -616,7 +616,7 @@ typedef void (XMLCDECL *errorSAXFunc) (void *ctx, * get all the callbacks for errors. */ typedef void (XMLCDECL *fatalErrorSAXFunc) (void *ctx, - const char *msg, ...); + const char *msg, ...) ATTRIBUTE_PRINTF(2,3); /** * isStandaloneSAXFunc: * @ctx: the user data (XML parser context) diff --git a/include/libxml/relaxng.h b/include/libxml/relaxng.h index 29c91c73..d3e39e00 100644 --- a/include/libxml/relaxng.h +++ b/include/libxml/relaxng.h @@ -32,7 +32,7 @@ typedef xmlRelaxNG *xmlRelaxNGPtr; * * Signature of an error callback from a Relax-NG validation */ -typedef void (XMLCDECL *xmlRelaxNGValidityErrorFunc) (void *ctx, const char *msg, ...); +typedef void (XMLCDECL *xmlRelaxNGValidityErrorFunc) (void *ctx, const char *msg, ...) ATTRIBUTE_PRINTF(2,3); /** * xmlRelaxNGValidityWarningFunc: @@ -42,7 +42,7 @@ typedef void (XMLCDECL *xmlRelaxNGValidityErrorFunc) (void *ctx, const char *msg * * Signature of a warning callback from a Relax-NG validation */ -typedef void (XMLCDECL *xmlRelaxNGValidityWarningFunc) (void *ctx, const char *msg, ...); +typedef void (XMLCDECL *xmlRelaxNGValidityWarningFunc) (void *ctx, const char *msg, ...) ATTRIBUTE_PRINTF(2,3); /** * A schemas validation context @@ -114,27 +114,27 @@ typedef enum { XMLPUBFUN int XMLCALL xmlRelaxNGInitTypes (void); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlRelaxNGCleanupTypes (void); /* * Interfaces for parsing. */ -XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL +XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL xmlRelaxNGNewParserCtxt (const char *URL); -XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL +XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL xmlRelaxNGNewMemParserCtxt (const char *buffer, int size); -XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL +XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL xmlRelaxNGNewDocParserCtxt (xmlDocPtr doc); XMLPUBFUN int XMLCALL xmlRelaxParserSetFlag (xmlRelaxNGParserCtxtPtr ctxt, - int flag); + int flag); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlRelaxNGFreeParserCtxt (xmlRelaxNGParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlRelaxNGSetParserErrors(xmlRelaxNGParserCtxtPtr ctxt, xmlRelaxNGValidityErrorFunc err, xmlRelaxNGValidityWarningFunc warn, @@ -149,12 +149,12 @@ XMLPUBFUN void XMLCALL xmlRelaxNGParserCtxtPtr ctxt, xmlStructuredErrorFunc serror, void *ctx); -XMLPUBFUN xmlRelaxNGPtr XMLCALL +XMLPUBFUN xmlRelaxNGPtr XMLCALL xmlRelaxNGParse (xmlRelaxNGParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlRelaxNGFree (xmlRelaxNGPtr schema); #ifdef LIBXML_OUTPUT_ENABLED -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlRelaxNGDump (FILE *output, xmlRelaxNGPtr schema); XMLPUBFUN void XMLCALL @@ -164,12 +164,12 @@ XMLPUBFUN void XMLCALL /* * Interfaces for validating */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlRelaxNGSetValidErrors(xmlRelaxNGValidCtxtPtr ctxt, xmlRelaxNGValidityErrorFunc err, xmlRelaxNGValidityWarningFunc warn, void *ctx); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlRelaxNGGetValidErrors(xmlRelaxNGValidCtxtPtr ctxt, xmlRelaxNGValidityErrorFunc *err, xmlRelaxNGValidityWarningFunc *warn, @@ -177,29 +177,29 @@ XMLPUBFUN int XMLCALL XMLPUBFUN void XMLCALL xmlRelaxNGSetValidStructuredErrors(xmlRelaxNGValidCtxtPtr ctxt, xmlStructuredErrorFunc serror, void *ctx); -XMLPUBFUN xmlRelaxNGValidCtxtPtr XMLCALL +XMLPUBFUN xmlRelaxNGValidCtxtPtr XMLCALL xmlRelaxNGNewValidCtxt (xmlRelaxNGPtr schema); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlRelaxNGFreeValidCtxt (xmlRelaxNGValidCtxtPtr ctxt); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlRelaxNGValidateDoc (xmlRelaxNGValidCtxtPtr ctxt, - xmlDocPtr doc); + xmlDocPtr doc); /* * Interfaces for progressive validation when possible */ -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlRelaxNGValidatePushElement (xmlRelaxNGValidCtxtPtr ctxt, xmlDocPtr doc, xmlNodePtr elem); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlRelaxNGValidatePushCData (xmlRelaxNGValidCtxtPtr ctxt, const xmlChar *data, int len); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlRelaxNGValidatePopElement (xmlRelaxNGValidCtxtPtr ctxt, xmlDocPtr doc, xmlNodePtr elem); -XMLPUBFUN int XMLCALL +XMLPUBFUN int XMLCALL xmlRelaxNGValidateFullElement (xmlRelaxNGValidCtxtPtr ctxt, xmlDocPtr doc, xmlNodePtr elem); diff --git a/include/libxml/valid.h b/include/libxml/valid.h index 7492d28b..f1892b0e 100644 --- a/include/libxml/valid.h +++ b/include/libxml/valid.h @@ -41,7 +41,7 @@ typedef xmlValidState *xmlValidStatePtr; */ typedef void (XMLCDECL *xmlValidityErrorFunc) (void *ctx, const char *msg, - ...); + ...) ATTRIBUTE_PRINTF(2,3); /** * xmlValidityWarningFunc: @@ -56,7 +56,7 @@ typedef void (XMLCDECL *xmlValidityErrorFunc) (void *ctx, */ typedef void (XMLCDECL *xmlValidityWarningFunc) (void *ctx, const char *msg, - ...); + ...) ATTRIBUTE_PRINTF(2,3); #ifdef IN_LIBXML /** diff --git a/include/libxml/xmlerror.h b/include/libxml/xmlerror.h index c9336b97..7cce9c34 100644 --- a/include/libxml/xmlerror.h +++ b/include/libxml/xmlerror.h @@ -61,7 +61,7 @@ typedef enum { XML_FROM_CHECK, /* The error checking module */ XML_FROM_WRITER, /* The xmlwriter module */ XML_FROM_MODULE, /* The dynamically loaded module module*/ - XML_FROM_I18N, /* The module handling character conversion */ + XML_FROM_I18N, /* The module handling character conversion */ XML_FROM_SCHEMATRONV /* The Schematron validator module */ } xmlErrorDomain; @@ -645,7 +645,7 @@ typedef enum { XML_SCHEMAV_CVC_ELT_4_3, /* 1852 */ XML_SCHEMAV_CVC_ELT_5_1_1, /* 1853 */ XML_SCHEMAV_CVC_ELT_5_1_2, /* 1854 */ - XML_SCHEMAV_CVC_ELT_5_2_1, /* 1855 */ + XML_SCHEMAV_CVC_ELT_5_2_1, /* 1855 */ XML_SCHEMAV_CVC_ELT_5_2_2_1, /* 1856 */ XML_SCHEMAV_CVC_ELT_5_2_2_2_1, /* 1857 */ XML_SCHEMAV_CVC_ELT_5_2_2_2_2, /* 1858 */ @@ -670,7 +670,7 @@ typedef enum { XML_SCHEMAV_CVC_IDC, /* 1877 */ XML_SCHEMAV_CVC_WILDCARD, /* 1878 */ XML_SCHEMAV_MISC, /* 1879 */ - XML_XPTR_UNKNOWN_SCHEME = 1900, + XML_XPTR_UNKNOWN_SCHEME = 1900, XML_XPTR_CHILDSEQ_START, /* 1901 */ XML_XPTR_EVAL_FAILED, /* 1902 */ XML_XPTR_EXTRA_OBJECTS, /* 1903 */ @@ -691,15 +691,15 @@ typedef enum { XML_SCHEMAP_SRC_SIMPLE_TYPE_2, /* 3001 */ XML_SCHEMAP_SRC_SIMPLE_TYPE_3, /* 3002 */ XML_SCHEMAP_SRC_SIMPLE_TYPE_4, /* 3003 */ - XML_SCHEMAP_SRC_RESOLVE, /* 3004 */ + XML_SCHEMAP_SRC_RESOLVE, /* 3004 */ XML_SCHEMAP_SRC_RESTRICTION_BASE_OR_SIMPLETYPE, /* 3005 */ XML_SCHEMAP_SRC_LIST_ITEMTYPE_OR_SIMPLETYPE, /* 3006 */ XML_SCHEMAP_SRC_UNION_MEMBERTYPES_OR_SIMPLETYPES, /* 3007 */ XML_SCHEMAP_ST_PROPS_CORRECT_1, /* 3008 */ XML_SCHEMAP_ST_PROPS_CORRECT_2, /* 3009 */ - XML_SCHEMAP_ST_PROPS_CORRECT_3, /* 3010 */ + XML_SCHEMAP_ST_PROPS_CORRECT_3, /* 3010 */ XML_SCHEMAP_COS_ST_RESTRICTS_1_1, /* 3011 */ - XML_SCHEMAP_COS_ST_RESTRICTS_1_2, /* 3012 */ + XML_SCHEMAP_COS_ST_RESTRICTS_1_2, /* 3012 */ XML_SCHEMAP_COS_ST_RESTRICTS_1_3_1, /* 3013 */ XML_SCHEMAP_COS_ST_RESTRICTS_1_3_2, /* 3014 */ XML_SCHEMAP_COS_ST_RESTRICTS_2_1, /* 3015 */ @@ -718,7 +718,7 @@ typedef enum { XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_3, /* 3028 */ XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_4, /* 3029 */ XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_5, /* 3030 */ - XML_SCHEMAP_COS_ST_DERIVED_OK_2_1, /* 3031 */ + XML_SCHEMAP_COS_ST_DERIVED_OK_2_1, /* 3031 */ XML_SCHEMAP_COS_ST_DERIVED_OK_2_2, /* 3032 */ XML_SCHEMAP_S4S_ELEM_NOT_ALLOWED, /* 3033 */ XML_SCHEMAP_S4S_ELEM_MISSING, /* 3034 */ @@ -737,14 +737,14 @@ typedef enum { XML_SCHEMAP_E_PROPS_CORRECT_4, /* 3047 */ XML_SCHEMAP_E_PROPS_CORRECT_5, /* 3048 */ XML_SCHEMAP_E_PROPS_CORRECT_6, /* 3049 */ - XML_SCHEMAP_SRC_INCLUDE, /* 3050 */ + XML_SCHEMAP_SRC_INCLUDE, /* 3050 */ XML_SCHEMAP_SRC_ATTRIBUTE_1, /* 3051 */ XML_SCHEMAP_SRC_ATTRIBUTE_2, /* 3052 */ XML_SCHEMAP_SRC_ATTRIBUTE_3_1, /* 3053 */ XML_SCHEMAP_SRC_ATTRIBUTE_3_2, /* 3054 */ XML_SCHEMAP_SRC_ATTRIBUTE_4, /* 3055 */ XML_SCHEMAP_NO_XMLNS, /* 3056 */ - XML_SCHEMAP_NO_XSI, /* 3057 */ + XML_SCHEMAP_NO_XSI, /* 3057 */ XML_SCHEMAP_COS_VALID_DEFAULT_1, /* 3058 */ XML_SCHEMAP_COS_VALID_DEFAULT_2_1, /* 3059 */ XML_SCHEMAP_COS_VALID_DEFAULT_2_2_1, /* 3060 */ @@ -843,7 +843,7 @@ typedef enum { */ typedef void (XMLCDECL *xmlGenericErrorFunc) (void *ctx, const char *msg, - ...); + ...) ATTRIBUTE_PRINTF(2,3); /** * xmlStructuredErrorFunc: * @userData: user provided data for the error callback @@ -858,38 +858,38 @@ typedef void (XMLCALL *xmlStructuredErrorFunc) (void *userData, xmlErrorPtr erro * Use the following function to reset the two global variables * xmlGenericError and xmlGenericErrorContext. */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlSetGenericErrorFunc (void *ctx, xmlGenericErrorFunc handler); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL initGenericErrorDefaultFunc (xmlGenericErrorFunc *handler); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlSetStructuredErrorFunc (void *ctx, xmlStructuredErrorFunc handler); /* * Default message routines used by SAX and Valid context for error * and warning reporting. */ -XMLPUBFUN void XMLCDECL +XMLPUBFUN void XMLCDECL xmlParserError (void *ctx, const char *msg, - ...); -XMLPUBFUN void XMLCDECL + ...) ATTRIBUTE_PRINTF(2,3); +XMLPUBFUN void XMLCDECL xmlParserWarning (void *ctx, const char *msg, - ...); -XMLPUBFUN void XMLCDECL + ...) ATTRIBUTE_PRINTF(2,3); +XMLPUBFUN void XMLCDECL xmlParserValidityError (void *ctx, const char *msg, - ...); -XMLPUBFUN void XMLCDECL + ...) ATTRIBUTE_PRINTF(2,3); +XMLPUBFUN void XMLCDECL xmlParserValidityWarning (void *ctx, const char *msg, - ...); -XMLPUBFUN void XMLCALL + ...) ATTRIBUTE_PRINTF(2,3); +XMLPUBFUN void XMLCALL xmlParserPrintFileInfo (xmlParserInputPtr input); -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL xmlParserPrintFileContext (xmlParserInputPtr input); /* @@ -907,19 +907,19 @@ XMLPUBFUN void XMLCALL xmlResetError (xmlErrorPtr err); XMLPUBFUN int XMLCALL xmlCopyError (xmlErrorPtr from, - xmlErrorPtr to); + xmlErrorPtr to); #ifdef IN_LIBXML /* * Internal callback reporting routine */ -XMLPUBFUN void XMLCALL +XMLPUBFUN void XMLCALL __xmlRaiseError (xmlStructuredErrorFunc schannel, - xmlGenericErrorFunc channel, - void *data, + xmlGenericErrorFunc channel, + void *data, void *ctx, - void *node, - int domain, + void *node, + int domain, int code, xmlErrorLevel level, const char *file, @@ -930,10 +930,10 @@ XMLPUBFUN void XMLCALL int int1, int col, const char *msg, - ...); -XMLPUBFUN void XMLCALL + ...) ATTRIBUTE_PRINTF(16,17); +XMLPUBFUN void XMLCALL __xmlSimpleError (int domain, - int code, + int code, xmlNodePtr node, const char *msg, const char *extra); diff --git a/include/libxml/xmlschemas.h b/include/libxml/xmlschemas.h index 556ef89e..ebef3a7b 100644 --- a/include/libxml/xmlschemas.h +++ b/include/libxml/xmlschemas.h @@ -92,7 +92,7 @@ typedef xmlSchema *xmlSchemaPtr; * * Signature of an error callback from an XSD validation */ -typedef void (XMLCDECL *xmlSchemaValidityErrorFunc) (void *ctx, const char *msg, ...); +typedef void (XMLCDECL *xmlSchemaValidityErrorFunc) (void *ctx, const char *msg, ...) ATTRIBUTE_PRINTF(2,3); /** * xmlSchemaValidityWarningFunc: @@ -102,7 +102,7 @@ typedef void (XMLCDECL *xmlSchemaValidityErrorFunc) (void *ctx, const char *msg, * * Signature of a warning callback from an XSD validation */ -typedef void (XMLCDECL *xmlSchemaValidityWarningFunc) (void *ctx, const char *msg, ...); +typedef void (XMLCDECL *xmlSchemaValidityWarningFunc) (void *ctx, const char *msg, ...) ATTRIBUTE_PRINTF(2,3); /** * A schemas validation context diff --git a/include/libxml/xmlversion.h.in b/include/libxml/xmlversion.h.in index 4079295c..05c9f297 100644 --- a/include/libxml/xmlversion.h.in +++ b/include/libxml/xmlversion.h.in @@ -382,18 +382,27 @@ XMLPUBFUN void XMLCALL xmlCheckVersion(int version); #define LIBXML_ZLIB_ENABLED #endif +#ifdef __GNUC__ +#ifdef HAVE_ANSIDECL_H +#include +#endif + /** * ATTRIBUTE_UNUSED: * * Macro used to signal to GCC unused function parameters */ -#ifdef __GNUC__ -#ifdef HAVE_ANSIDECL_H -#include -#endif + #ifndef ATTRIBUTE_UNUSED #define ATTRIBUTE_UNUSED __attribute__((unused)) #endif + +/** + * ATTRIBUTE_ALLOC_SIZE: + * + * Macro used to indicate to GCC this is an allocator function + */ + #ifndef ATTRIBUTE_ALLOC_SIZE # if ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3))) # define ATTRIBUTE_ALLOC_SIZE(x) __attribute__((alloc_size(x))) @@ -403,11 +412,44 @@ XMLPUBFUN void XMLCALL xmlCheckVersion(int version); #else # define ATTRIBUTE_ALLOC_SIZE(x) #endif + +/** + * ATTRIBUTE_PRINTF: + * + * Macro used to indicate to GCC the parameter are printf like + */ + +#ifndef ATTRIBUTE_PRINTF +# if ((__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3))) +# define ATTRIBUTE_PRINTF(fmt,args) __attribute__((__format__(__printf__,fmt,args))) +# else +# define ATTRIBUTE_PRINTF(fmt,args) +# endif #else -#define ATTRIBUTE_UNUSED -#define ATTRIBUTE_ALLOC_SIZE(x) +# define ATTRIBUTE_PRINTF(fmt,args) #endif +#else /* ! __GNUC__ */ +/** + * ATTRIBUTE_UNUSED: + * + * Macro used to signal to GCC unused function parameters + */ +#define ATTRIBUTE_UNUSED +/** + * ATTRIBUTE_ALLOC_SIZE: + * + * Macro used to indicate to GCC this is an allocator function + */ +#define ATTRIBUTE_ALLOC_SIZE(x) +/** + * ATTRIBUTE_PRINTF: + * + * Macro used to indicate to GCC the parameter are printf like + */ +#define ATTRIBUTE_PRINTF(fmt,args) +#endif /* __GNUC__ */ + #ifdef __cplusplus } #endif /* __cplusplus */ diff --git a/include/libxml/xmlwin32version.h.in b/include/libxml/xmlwin32version.h.in index f669df44..fbaf78bb 100644 --- a/include/libxml/xmlwin32version.h.in +++ b/include/libxml/xmlwin32version.h.in @@ -242,18 +242,27 @@ extern void xmlCheckVersion(int version); #endif #endif +#ifdef __GNUC__ +#ifdef HAVE_ANSIDECL_H +#include +#endif + /** * ATTRIBUTE_UNUSED: * * Macro used to signal to GCC unused function parameters */ -#ifdef __GNUC__ -#ifdef HAVE_ANSIDECL_H -#include -#endif + #ifndef ATTRIBUTE_UNUSED #define ATTRIBUTE_UNUSED #endif + +/** + * ATTRIBUTE_ALLOC_SIZE: + * + * Macro used to indicate to GCC this is an allocator function + */ + #ifndef ATTRIBUTE_ALLOC_SIZE # if ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3))) # define ATTRIBUTE_ALLOC_SIZE(x) __attribute__((alloc_size(x))) @@ -263,11 +272,29 @@ extern void xmlCheckVersion(int version); #else # define ATTRIBUTE_ALLOC_SIZE(x) #endif + +/** + * ATTRIBUTE_PRINTF: + * + * Macro used to indicate to GCC the parameter are printf like + */ + +#ifndef ATTRIBUTE_PRINTF +# if ((__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3))) +# define ATTRIBUTE_PRINTF(fmt,args) __attribute__((__format__(__printf__,fmt,args))) +# else +# define ATTRIBUTE_PRINTF(fmt,args) +# endif #else -#define ATTRIBUTE_UNUSED -#define ATTRIBUTE_ALLOC_SIZE(x) +# define ATTRIBUTE_PRINTF(fmt,args) #endif +#else /* !__GNUC__ */ +#define ATTRIBUTE_UNUSED +#define ATTRIBUTE_PRINTF(fmt,args) +#define ATTRIBUTE_ALLOC_SIZE(x) +#endif /* __GNUC__ */ + /* * #pragma comment(lib, "iconv.lib") * diff --git a/include/libxml/xmlwriter.h b/include/libxml/xmlwriter.h index 31ceb5f1..df4509da 100644 --- a/include/libxml/xmlwriter.h +++ b/include/libxml/xmlwriter.h @@ -69,11 +69,13 @@ extern "C" { XMLPUBFUN int XMLCALL xmlTextWriterEndComment(xmlTextWriterPtr writer); XMLPUBFUN int XMLCALL xmlTextWriterWriteFormatComment(xmlTextWriterPtr writer, - const char *format, ...); + const char *format, ...) + ATTRIBUTE_PRINTF(2,3); XMLPUBFUN int XMLCALL xmlTextWriterWriteVFormatComment(xmlTextWriterPtr writer, const char *format, - va_list argptr); + va_list argptr) + ATTRIBUTE_PRINTF(2,0); XMLPUBFUN int XMLCALL xmlTextWriterWriteComment(xmlTextWriterPtr writer, const xmlChar * @@ -102,12 +104,14 @@ extern "C" { XMLPUBFUN int XMLCALL xmlTextWriterWriteFormatElement(xmlTextWriterPtr writer, const xmlChar * name, - const char *format, ...); + const char *format, ...) + ATTRIBUTE_PRINTF(3,4); XMLPUBFUN int XMLCALL xmlTextWriterWriteVFormatElement(xmlTextWriterPtr writer, const xmlChar * name, const char *format, - va_list argptr); + va_list argptr) + ATTRIBUTE_PRINTF(3,0); XMLPUBFUN int XMLCALL xmlTextWriterWriteElement(xmlTextWriterPtr writer, const xmlChar * name, @@ -118,14 +122,16 @@ extern "C" { const xmlChar * prefix, const xmlChar * name, const xmlChar * namespaceURI, - const char *format, ...); + const char *format, ...) + ATTRIBUTE_PRINTF(5,6); XMLPUBFUN int XMLCALL xmlTextWriterWriteVFormatElementNS(xmlTextWriterPtr writer, const xmlChar * prefix, const xmlChar * name, const xmlChar * namespaceURI, const char *format, - va_list argptr); + va_list argptr) + ATTRIBUTE_PRINTF(5,0); XMLPUBFUN int XMLCALL xmlTextWriterWriteElementNS(xmlTextWriterPtr writer, const xmlChar * @@ -141,10 +147,12 @@ extern "C" { */ XMLPUBFUN int XMLCALL xmlTextWriterWriteFormatRaw(xmlTextWriterPtr writer, - const char *format, ...); + const char *format, ...) + ATTRIBUTE_PRINTF(2,3); XMLPUBFUN int XMLCALL xmlTextWriterWriteVFormatRaw(xmlTextWriterPtr writer, - const char *format, va_list argptr); + const char *format, va_list argptr) + ATTRIBUTE_PRINTF(2,0); XMLPUBFUN int XMLCALL xmlTextWriterWriteRawLen(xmlTextWriterPtr writer, const xmlChar * content, int len); @@ -154,12 +162,14 @@ extern "C" { XMLPUBFUN int XMLCALL xmlTextWriterWriteFormatString(xmlTextWriterPtr writer, const char - *format, ...); + *format, ...) + ATTRIBUTE_PRINTF(2,3); XMLPUBFUN int XMLCALL xmlTextWriterWriteVFormatString(xmlTextWriterPtr writer, const char *format, - va_list argptr); + va_list argptr) + ATTRIBUTE_PRINTF(2,0); XMLPUBFUN int XMLCALL xmlTextWriterWriteString(xmlTextWriterPtr writer, const xmlChar * content); @@ -193,12 +203,14 @@ extern "C" { XMLPUBFUN int XMLCALL xmlTextWriterWriteFormatAttribute(xmlTextWriterPtr writer, const xmlChar * name, - const char *format, ...); + const char *format, ...) + ATTRIBUTE_PRINTF(3,4); XMLPUBFUN int XMLCALL xmlTextWriterWriteVFormatAttribute(xmlTextWriterPtr writer, const xmlChar * name, const char *format, - va_list argptr); + va_list argptr) + ATTRIBUTE_PRINTF(3,0); XMLPUBFUN int XMLCALL xmlTextWriterWriteAttribute(xmlTextWriterPtr writer, const xmlChar * name, @@ -209,14 +221,16 @@ extern "C" { const xmlChar * prefix, const xmlChar * name, const xmlChar * namespaceURI, - const char *format, ...); + const char *format, ...) + ATTRIBUTE_PRINTF(5,6); XMLPUBFUN int XMLCALL xmlTextWriterWriteVFormatAttributeNS(xmlTextWriterPtr writer, const xmlChar * prefix, const xmlChar * name, const xmlChar * namespaceURI, const char *format, - va_list argptr); + va_list argptr) + ATTRIBUTE_PRINTF(5,0); XMLPUBFUN int XMLCALL xmlTextWriterWriteAttributeNS(xmlTextWriterPtr writer, const xmlChar * @@ -242,11 +256,13 @@ extern "C" { XMLPUBFUN int XMLCALL xmlTextWriterWriteFormatPI(xmlTextWriterPtr writer, const xmlChar * target, - const char *format, ...); + const char *format, ...) + ATTRIBUTE_PRINTF(3,4); XMLPUBFUN int XMLCALL xmlTextWriterWriteVFormatPI(xmlTextWriterPtr writer, const xmlChar * target, - const char *format, va_list argptr); + const char *format, va_list argptr) + ATTRIBUTE_PRINTF(3,0); XMLPUBFUN int XMLCALL xmlTextWriterWritePI(xmlTextWriterPtr writer, const xmlChar * target, @@ -270,10 +286,12 @@ extern "C" { */ XMLPUBFUN int XMLCALL xmlTextWriterWriteFormatCDATA(xmlTextWriterPtr writer, - const char *format, ...); + const char *format, ...) + ATTRIBUTE_PRINTF(2,3); XMLPUBFUN int XMLCALL xmlTextWriterWriteVFormatCDATA(xmlTextWriterPtr writer, - const char *format, va_list argptr); + const char *format, va_list argptr) + ATTRIBUTE_PRINTF(2,0); XMLPUBFUN int XMLCALL xmlTextWriterWriteCDATA(xmlTextWriterPtr writer, const xmlChar * content); @@ -296,13 +314,15 @@ extern "C" { const xmlChar * name, const xmlChar * pubid, const xmlChar * sysid, - const char *format, ...); + const char *format, ...) + ATTRIBUTE_PRINTF(5,6); XMLPUBFUN int XMLCALL xmlTextWriterWriteVFormatDTD(xmlTextWriterPtr writer, const xmlChar * name, const xmlChar * pubid, const xmlChar * sysid, - const char *format, va_list argptr); + const char *format, va_list argptr) + ATTRIBUTE_PRINTF(5,0); XMLPUBFUN int XMLCALL xmlTextWriterWriteDTD(xmlTextWriterPtr writer, const xmlChar * name, @@ -332,12 +352,14 @@ extern "C" { XMLPUBFUN int XMLCALL xmlTextWriterWriteFormatDTDElement(xmlTextWriterPtr writer, const xmlChar * name, - const char *format, ...); + const char *format, ...) + ATTRIBUTE_PRINTF(3,4); XMLPUBFUN int XMLCALL xmlTextWriterWriteVFormatDTDElement(xmlTextWriterPtr writer, const xmlChar * name, const char *format, - va_list argptr); + va_list argptr) + ATTRIBUTE_PRINTF(3,0); XMLPUBFUN int XMLCALL xmlTextWriterWriteDTDElement(xmlTextWriterPtr writer, const xmlChar * @@ -360,12 +382,14 @@ extern "C" { XMLPUBFUN int XMLCALL xmlTextWriterWriteFormatDTDAttlist(xmlTextWriterPtr writer, const xmlChar * name, - const char *format, ...); + const char *format, ...) + ATTRIBUTE_PRINTF(3,4); XMLPUBFUN int XMLCALL xmlTextWriterWriteVFormatDTDAttlist(xmlTextWriterPtr writer, const xmlChar * name, const char *format, - va_list argptr); + va_list argptr) + ATTRIBUTE_PRINTF(3,0); XMLPUBFUN int XMLCALL xmlTextWriterWriteDTDAttlist(xmlTextWriterPtr writer, const xmlChar * @@ -389,13 +413,15 @@ extern "C" { xmlTextWriterWriteFormatDTDInternalEntity(xmlTextWriterPtr writer, int pe, const xmlChar * name, - const char *format, ...); + const char *format, ...) + ATTRIBUTE_PRINTF(4,5); XMLPUBFUN int XMLCALL xmlTextWriterWriteVFormatDTDInternalEntity(xmlTextWriterPtr writer, int pe, const xmlChar * name, const char *format, - va_list argptr); + va_list argptr) + ATTRIBUTE_PRINTF(4,0); XMLPUBFUN int XMLCALL xmlTextWriterWriteDTDInternalEntity(xmlTextWriterPtr writer, int pe, diff --git a/threads.c b/threads.c index ef87763a..2223e8a6 100644 --- a/threads.c +++ b/threads.c @@ -919,7 +919,7 @@ xmlCleanupThreads(void) } DeleteCriticalSection(&cleanup_helpers_cs); #elif defined HAVE_PTHREAD_H - if ((pthread_key_delete != NULL) && (globalkey != NULL)) + if ((libxml_is_threaded) && (pthread_key_delete != NULL)) pthread_key_delete(globalkey); #endif } diff --git a/xmlmemory.c b/xmlmemory.c index 510d4ce8..433abb8e 100644 --- a/xmlmemory.c +++ b/xmlmemory.c @@ -205,7 +205,7 @@ xmlMallocLoc(size_t size, const char * file, int line) if (xmlMemTraceBlockAt == ret) { xmlGenericError(xmlGenericErrorContext, - "%p : Malloc(%d) Ok\n", xmlMemTraceBlockAt, size); + "%p : Malloc(%ld) Ok\n", xmlMemTraceBlockAt, size); xmlMallocBreakpoint(); } @@ -273,7 +273,7 @@ xmlMallocAtomicLoc(size_t size, const char * file, int line) if (xmlMemTraceBlockAt == ret) { xmlGenericError(xmlGenericErrorContext, - "%p : Malloc(%d) Ok\n", xmlMemTraceBlockAt, size); + "%p : Malloc(%ld) Ok\n", xmlMemTraceBlockAt, size); xmlMallocBreakpoint(); } @@ -348,7 +348,7 @@ xmlReallocLoc(void *ptr,size_t size, const char * file, int line) } if (xmlMemTraceBlockAt == ptr) { xmlGenericError(xmlGenericErrorContext, - "%p : Realloced(%d -> %d) Ok\n", + "%p : Realloced(%ld -> %ld) Ok\n", xmlMemTraceBlockAt, p->mh_size, size); xmlMallocBreakpoint(); } diff --git a/xpath.c b/xpath.c index 514262fb..57442e6a 100644 --- a/xpath.c +++ b/xpath.c @@ -13329,8 +13329,8 @@ xmlXPathCompOpEval(xmlXPathParserContextPtr ctxt, xmlXPathStepOpPtr op) URI = xmlXPathNsLookup(ctxt->context, op->value5); if (URI == NULL) { xmlGenericError(xmlGenericErrorContext, - "xmlXPathCompOpEval: variable %s bound to undefined prefix %s\n", - op->value4, op->value5); + "xmlXPathCompOpEval: variable %s bound to undefined prefix %s\n", + (char *) op->value4, (char *)op->value5); return (total); } val = xmlXPathVariableLookupNS(ctxt->context, @@ -13377,8 +13377,8 @@ xmlXPathCompOpEval(xmlXPathParserContextPtr ctxt, xmlXPathStepOpPtr op) URI = xmlXPathNsLookup(ctxt->context, op->value5); if (URI == NULL) { xmlGenericError(xmlGenericErrorContext, - "xmlXPathCompOpEval: function %s bound to undefined prefix %s\n", - op->value4, op->value5); + "xmlXPathCompOpEval: function %s bound to undefined prefix %s\n", + (char *)op->value4, (char *)op->value5); return (total); } func = xmlXPathFunctionLookupNS(ctxt->context, @@ -13386,8 +13386,8 @@ xmlXPathCompOpEval(xmlXPathParserContextPtr ctxt, xmlXPathStepOpPtr op) } if (func == NULL) { xmlGenericError(xmlGenericErrorContext, - "xmlXPathCompOpEval: function %s not found\n", - op->value4); + "xmlXPathCompOpEval: function %s not found\n", + (char *)op->value4); XP_ERROR0(XPATH_UNKNOWN_FUNC_ERROR); } op->cache = XML_CAST_FPTR(func);