Commit bc88ea7a authored by Francois Cartegnie's avatar Francois Cartegnie

ml: fix double free.

Double free was occuring on some psz_url when copying medias.
Might be caused by a double listing from the sql query.
parent 03fc3695
......@@ -558,8 +558,8 @@ static inline void ml_FreePeople( ml_person_t *p_person )
if( p_person == NULL )
return;
ml_FreePeople( p_person->p_next );
free( p_person->psz_name );
free( p_person->psz_role );
FREENULL( p_person->psz_name );
FREENULL( p_person->psz_role );
free( p_person );
}
......@@ -570,16 +570,16 @@ static inline void ml_FreePeople( ml_person_t *p_person )
*/
static inline void ml_FreeMediaContent( ml_media_t *p_media )
{
free( p_media->psz_uri );
free( p_media->psz_title );
free( p_media->psz_orig_title );
free( p_media->psz_cover );
free( p_media->psz_comment );
free( p_media->psz_extra );
free( p_media->psz_genre );
free( p_media->psz_album );
free( p_media->psz_preview );
free( p_media->psz_language );
FREENULL( p_media->psz_uri );
FREENULL( p_media->psz_title );
FREENULL( p_media->psz_orig_title );
FREENULL( p_media->psz_cover );
FREENULL( p_media->psz_comment );
FREENULL( p_media->psz_extra );
FREENULL( p_media->psz_genre );
FREENULL( p_media->psz_album );
FREENULL( p_media->psz_preview );
FREENULL( p_media->psz_language );
ml_FreePeople( p_media->p_people );
p_media->b_sparse = true;
p_media->i_id = 0;
......@@ -721,37 +721,38 @@ static inline int ml_CopyMedia( ml_media_t *b, ml_media_t *a )
b->i_bitrate = a->i_bitrate;
b->i_samplerate = a->i_samplerate;
b->i_bpm = a->i_bpm;
free( b->psz_uri );
FREENULL( b->psz_uri );
if( a->psz_uri )
b->psz_uri = strdup( a->psz_uri );
free( b->psz_title );
FREENULL( b->psz_title );
if( a->psz_title )
b->psz_title = strdup( a->psz_title );
free( b->psz_orig_title );
FREENULL( b->psz_orig_title );
if( a->psz_orig_title )
b->psz_orig_title = strdup( a->psz_orig_title );
free( b->psz_album );
FREENULL( b->psz_album );
if( a->psz_album )
b->psz_album = strdup( a->psz_album );
free( b->psz_cover );
FREENULL( b->psz_cover );
if( a->psz_cover )
b->psz_cover = strdup( a->psz_cover );
free( b->psz_genre );
FREENULL( b->psz_genre );
if( a->psz_genre )
b->psz_genre = strdup( a->psz_genre );
free( b->psz_comment );
FREENULL( b->psz_comment );
if( a->psz_comment )
b->psz_comment = strdup( a->psz_comment );
free( b->psz_extra );
FREENULL( b->psz_extra );
if( a->psz_extra )
b->psz_extra = strdup( a->psz_extra );
free( b->psz_preview );
FREENULL( b->psz_preview );
if( a->psz_preview )
b->psz_preview = strdup( a->psz_preview );
free( b->psz_language );
FREENULL( b->psz_language );
if( a->psz_language )
b->psz_language = strdup( a->psz_language );
ml_FreePeople( b->p_people );
b->p_people = NULL;
if( a->p_people ) ml_CopyPersons( &( b->p_people ), a->p_people );
ml_UnlockMedia( b );
ml_UnlockMedia( a );
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment