# HG changeset patch # User Jonathan Schleifer # Date 1222535072 -7200 # Node ID 233cb5dffbf76650c261aebd9badd528d6780d49 # Parent c57d9b5754b3c502b8d066fad5aa820b40e5b5e9 Fix tags for ALAC files. For some reason, the tag can occour a second time, but this time empty. Always use the first tag we found. diff -r c57d9b5754b3 -r 233cb5dffbf7 src/alac/demux.c --- a/src/alac/demux.c Mon Sep 22 06:41:18 2008 +0300 +++ b/src/alac/demux.c Sat Sep 27 19:04:32 2008 +0200 @@ -571,28 +571,36 @@ bptr += 4; break; case MAKEFOURCC('d','a','t','a'): + /* Don't compare to NULL in the following ifs! + * NULL may be -1 on some system, but we used memset to set it + * to 0! + */ switch(udta_tgt) { case UDTA_NAM: - qtmovie->res->tuple.nam = g_strdup(bptr + 12); - break; + if (qtmovie->res->tuple.nam == 0) + qtmovie->res->tuple.nam = g_strdup(bptr + 12); + break; case UDTA_ART: - qtmovie->res->tuple.art = g_strdup(bptr + 12); - break; + if (qtmovie->res->tuple.art == 0) + qtmovie->res->tuple.art = g_strdup(bptr + 12); + break; case UDTA_ALB: - qtmovie->res->tuple.alb = g_strdup(bptr + 12); - break; + if (qtmovie->res->tuple.alb == 0) + qtmovie->res->tuple.alb = g_strdup(bptr + 12); + break; case UDTA_DAY: - qtmovie->res->tuple.day = g_strdup(bptr + 12); - break; + if (qtmovie->res->tuple.day == 0) + qtmovie->res->tuple.day = g_strdup(bptr + 12); + break; case UDTA_CMT: - qtmovie->res->tuple.cmt = g_strdup(bptr + 12); - break; + if (qtmovie->res->tuple.cmt == 0) + qtmovie->res->tuple.cmt = g_strdup(bptr + 12); + break; case UDTA_GEN: - qtmovie->res->tuple.gen = g_strdup(bptr + 12); - break; - default: - break; + if (qtmovie->res->tuple.gen == 0) + qtmovie->res->tuple.gen = g_strdup(bptr + 12); + break; } bptr += 12;