From dfce44aa4f81fb2a5abf51435b87bd7cd70316f1 Mon Sep 17 00:00:00 2001 From: =?utf8?q?R=C3=A9mi=20Duraffort?= Date: Mon, 15 Dec 2008 19:59:40 +0100 Subject: [PATCH] * Fix memleak (#2352) * Use NULL instead of 0 * cosmetics. --- modules/misc/xml/xtag.c | 65 ++++++++++++++++++++++++++--------------- 1 file changed, 41 insertions(+), 24 deletions(-) diff --git a/modules/misc/xml/xtag.c b/modules/misc/xml/xtag.c index 475cef8303..3f0f311846 100644 --- a/modules/misc/xml/xtag.c +++ b/modules/misc/xml/xtag.c @@ -193,26 +193,32 @@ static xml_reader_t *ReaderCreate( xml_t *p_xml, stream_t *s ) } p_buffer = p_new; } - p_buffer[ i_pos + i_size ] = 0; /* 0 terminated string */ - if( i_pos + i_size == 0 ) { msg_Dbg( p_xml, "empty XML" ); free( p_buffer ); - return 0; + return NULL; } + p_buffer[ i_pos + i_size ] = '\0'; /* 0 terminated string */ p_root = xtag_new_parse( p_buffer, i_buffer ); if( !p_root ) { msg_Warn( p_xml, "couldn't parse XML" ); free( p_buffer ); - return 0; + return NULL; } free( p_buffer ); p_reader = malloc( sizeof(xml_reader_t) ); + if( !p_reader ) + return NULL; p_reader->p_sys = malloc( sizeof(xml_reader_sys_t) ); + if( !p_reader->p_sys ) + { + free( p_reader ); + return NULL; + } p_reader->p_sys->p_root = p_root; p_reader->p_sys->p_curtag = NULL; p_reader->p_sys->p_curattr = NULL; @@ -252,12 +258,12 @@ static int ReaderRead( xml_reader_t *p_reader ) return 1; } - while( 1 ) + while( true ) { if( (p_child = xtag_next_child( p_reader->p_sys->p_curtag, 0 )) ) { p_reader->p_sys->p_curtag = p_child; - p_reader->p_sys->p_curattr = 0; + p_reader->p_sys->p_curattr = NULL; p_reader->p_sys->b_endtag = false; return 1; } @@ -279,10 +285,12 @@ static int ReaderRead( xml_reader_t *p_reader ) static int ReaderNodeType( xml_reader_t *p_reader ) { - if( p_reader->p_sys->p_curtag->name && - p_reader->p_sys->b_endtag ) return XML_READER_ENDELEM; - if( p_reader->p_sys->p_curtag->name ) return XML_READER_STARTELEM; - if( p_reader->p_sys->p_curtag->pcdata ) return XML_READER_TEXT; + if( p_reader->p_sys->p_curtag->name && p_reader->p_sys->b_endtag ) + return XML_READER_ENDELEM; + if( p_reader->p_sys->p_curtag->name ) + return XML_READER_STARTELEM; + if( p_reader->p_sys->p_curtag->pcdata ) + return XML_READER_TEXT; return XML_READER_NONE; } @@ -300,8 +308,7 @@ static char *ReaderName( xml_reader_t *p_reader ) else psz_name = ((XAttribute *)p_reader->p_sys->p_curattr->data)->name; - if( psz_name ) return strdup( psz_name ); - else return 0; + return psz_name ? strdup( psz_name ) : NULL; } static char *ReaderValue( xml_reader_t *p_reader ) @@ -315,7 +322,7 @@ static char *ReaderValue( xml_reader_t *p_reader ) return strdup( p_reader->p_sys->p_curtag->pcdata ); } - if( !p_reader->p_sys->p_curattr ) return 0; + if( !p_reader->p_sys->p_curattr ) return NULL; #ifdef XTAG_DEBUG fprintf( stderr, "%s=%s\n", ((XAttribute *)p_reader->p_sys->p_curattr->data)->name, @@ -324,8 +331,7 @@ static char *ReaderValue( xml_reader_t *p_reader ) psz_name = ((XAttribute *)p_reader->p_sys->p_curattr->data)->value; - if( psz_name ) return strdup( psz_name ); - else return 0; + return psz_name ? strdup( psz_name ) : NULL; } static int ReaderNextAttr( xml_reader_t *p_reader ) @@ -334,9 +340,8 @@ static int ReaderNextAttr( xml_reader_t *p_reader ) p_reader->p_sys->p_curattr = p_reader->p_sys->p_curtag->attributes; else if( p_reader->p_sys->p_curattr ) p_reader->p_sys->p_curattr = p_reader->p_sys->p_curattr->next; - - if( p_reader->p_sys->p_curattr ) return VLC_SUCCESS; - else return VLC_EGENERIC; + + return p_reader->p_sys->p_curattr ? VLC_SUCCESS : VLC_EGENERIC; } /***************************************************************************** @@ -351,10 +356,14 @@ static XList *xlist_append( XList *list, void *data ) l->prev = l->next = NULL; l->data = data; - if( list == NULL ) return l; + if( !list ) + return l; for( last = list; last; last = last->next ) - if( last->next == NULL ) break; + { + if( !last->next ) + break; + } if( last ) last->next = l; l->prev = last; @@ -507,7 +516,11 @@ static char *xtag_slurp_quoted( XTagParser *parser ) ret[xi] = '\0'; parser->start = &s[xi]; - if( !xtag_assert_and_pass( parser, quote ) ) return NULL; + if( !xtag_assert_and_pass( parser, quote ) ) + { + free( ret ); + return NULL; + } return ret; } @@ -518,12 +531,14 @@ static XAttribute *xtag_parse_attribute( XTagParser *parser ) char *name, *value; char *s; - if( !parser->valid ) return NULL; + if( !parser->valid ) + return NULL; xtag_skip_whitespace( parser ); name = xtag_slurp_to( parser, X_WHITESPACE|X_EQUAL, X_SLASH|X_CLOSETAG ); - if( name == NULL ) return NULL; + if( !name ) + return NULL; xtag_skip_whitespace( parser ); s = parser->start; @@ -747,7 +762,8 @@ static XTag *xtag_free( XTag *xtag ) XAttribute *attr; XTag *child; - if( xtag == NULL ) return NULL; + if( !xtag ) + return NULL; free( xtag->name ); free( xtag->pcdata ); @@ -1052,3 +1068,4 @@ static int xtag_snprint( char *buf, int n, XTag *xtag ) return written; } + -- 2.39.5