@@ -290,17 +290,19 @@ notation_decl_handler(void *user, const xmlChar *notation, const xmlChar *pub_id
290290 parser -> h_notation_decl (parser -> user , notation , NULL , sys_id , pub_id );
291291}
292292
293- static void
294- build_comment (const xmlChar * data , size_t data_len , xmlChar * * comment , size_t * comment_len )
293+ static xmlChar *
294+ build_comment (const xmlChar * data , size_t data_len , size_t * comment_len )
295295{
296296 * comment_len = data_len + 7 ;
297297
298- * comment = xmlMalloc (* comment_len + 1 );
299- memcpy (* comment , "<!--" , 4 );
300- memcpy (* comment + 4 , data , data_len );
301- memcpy (* comment + 4 + data_len , "-->" , 3 );
298+ xmlChar * comment = emalloc (* comment_len + 1 );
299+ memcpy (comment , "<!--" , 4 );
300+ memcpy (comment + 4 , data , data_len );
301+ memcpy (comment + 4 + data_len , "-->" , 3 );
302+
303+ comment [* comment_len ] = '\0' ;
302304
303- ( * comment )[ * comment_len ] = '\0' ;
305+ return comment ;
304306}
305307
306308static void
@@ -309,12 +311,11 @@ comment_handler(void *user, const xmlChar *comment)
309311 XML_Parser parser = (XML_Parser ) user ;
310312
311313 if (parser -> h_default ) {
312- xmlChar * d_comment ;
313314 size_t d_comment_len ;
314315
315- build_comment (comment , (size_t ) xmlStrlen (comment ), & d_comment , & d_comment_len );
316+ xmlChar * d_comment = build_comment (comment , (size_t ) xmlStrlen (comment ), & d_comment_len );
316317 parser -> h_default (parser -> user , d_comment , d_comment_len );
317- xmlFree (d_comment );
318+ efree (d_comment );
318319 }
319320}
320321
0 commit comments