]> git.sesse.net Git - vlc/blobdiff - modules/misc/xml/libxml.c
Check malloc return value and fix a memory leak.
[vlc] / modules / misc / xml / libxml.c
index c5cdcc7799361c13af343726cdb04e6e91da8db3..c8ba82f8ba3e385f3ce3c5552ac95e1a390c1460 100644 (file)
@@ -1,7 +1,7 @@
 /*****************************************************************************
  * libxml.c: XML parser using libxml2
  *****************************************************************************
- * Copyright (C) 2004 VideoLAN (Centrale Réseaux) and its contributors
+ * Copyright (C) 2004 the VideoLAN team
  * $Id$
  *
  * Authors: Gildas Bazin <gbazin@videolan.org>
  *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  *****************************************************************************/
 
-#include <stdlib.h>
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
 #include <vlc/vlc.h>
 
 #include "vlc_block.h"
@@ -38,8 +41,6 @@ static int  Open ( vlc_object_t * );
 static void Close( vlc_object_t * );
 
 vlc_module_begin();
-    set_category( CAT_ADVANCED );
-    set_subcategory( SUBCAT_ADVANCED_XML );
     set_description( _("XML Parser (using libxml2)") );
     set_capability( "xml", 10 );
     set_callbacks( Open, Close );
@@ -86,6 +87,7 @@ static int Open( vlc_object_t *p_this )
  *****************************************************************************/
 static void Close( vlc_object_t *p_this )
 {
+    VLC_UNUSED(p_this);
     return;
 }
 
@@ -94,6 +96,7 @@ static void Close( vlc_object_t *p_this )
  *****************************************************************************/
 static void CatalogLoad( xml_t *p_xml, const char *psz_filename )
 {
+    VLC_UNUSED(p_xml);
     if( !psz_filename ) xmlInitializeCatalog();
     else xmlLoadCatalog( psz_filename );
 }
@@ -101,7 +104,9 @@ static void CatalogLoad( xml_t *p_xml, const char *psz_filename )
 static void CatalogAdd( xml_t *p_xml, const char *psz_arg1,
                           const char *psz_arg2, const char *psz_filename )
 {
-    xmlCatalogAdd( psz_arg1, psz_arg2, psz_filename );
+    VLC_UNUSED(p_xml);
+    xmlCatalogAdd( (unsigned char*)psz_arg1, (unsigned char*)psz_arg2,
+        (unsigned char*)psz_filename );
 }
 
 /*****************************************************************************
@@ -111,6 +116,7 @@ static void ReaderErrorHandler( void *p_arg, const char *p_msg,
                                 xmlParserSeverities severity,
                                 xmlTextReaderLocatorPtr locator)
 {
+    VLC_UNUSED(severity);
     xml_reader_t *p_reader = (xml_reader_t *)p_arg;
     int line = xmlTextReaderLocatorLineNumber( locator );
     msg_Err( p_reader->p_xml, "XML parser error (line %d) : %s", line, p_msg );
@@ -121,15 +127,12 @@ static xml_reader_t *ReaderCreate( xml_t *p_xml, stream_t *p_stream )
     xml_reader_t *p_reader;
     xml_reader_sys_t *p_sys;
     xmlTextReaderPtr p_libxml_reader;
-    xmlParserInputBufferPtr p_read_context;
-
-    p_read_context = malloc( sizeof( xmlParserInputBuffer ) );
 
     p_libxml_reader = xmlReaderForIO( StreamRead, NULL, p_stream,
                                       NULL, NULL, 0 );
     if( !p_libxml_reader )
     {
-        msg_Err( p_xml, "failed to create xml parser" );
+        msg_Err( p_xml, "failed to create XML parser" );
         return 0;
     }
 
@@ -197,6 +200,7 @@ static int ReaderNodeType( xml_reader_t *p_reader )
     case XML_READER_TYPE_END_ELEMENT:
         i_ret = XML_READER_ENDELEM;
         break;
+    case XML_READER_TYPE_CDATA:
     case XML_READER_TYPE_TEXT:
         i_ret = XML_READER_TEXT;
         break;
@@ -216,7 +220,7 @@ static char *ReaderName( xml_reader_t *p_reader )
     const xmlChar *psz_name =
         xmlTextReaderConstName( p_reader->p_sys->p_reader );
 
-    if( psz_name ) return strdup( psz_name );
+    if( psz_name ) return strdup( (const char *)psz_name );
     else return 0;
 }
 
@@ -225,7 +229,7 @@ static char *ReaderValue( xml_reader_t *p_reader )
     const xmlChar *psz_value =
         xmlTextReaderConstValue( p_reader->p_sys->p_reader );
 
-    if( psz_value ) return strdup( psz_value );
+    if( psz_value ) return strdup( (const char *)psz_value );
     else return 0;
 }
 
@@ -238,5 +242,5 @@ static int ReaderNextAttr( xml_reader_t *p_reader )
 static int StreamRead( void *p_context, char *p_buffer, int i_buffer )
 {
     stream_t *s = (stream_t*)p_context;
-    return stream_Read( s, p_buffer, i_buffer );    
+    return stream_Read( s, p_buffer, i_buffer );
 }