diff -wbBur xbmc-11.0/xbmc/music/tags/MusicInfoTagLoaderCDDA.cpp xbmc-11.0.my/xbmc/music/tags/MusicInfoTagLoaderCDDA.cpp --- xbmc-11.0/xbmc/music/tags/MusicInfoTagLoaderCDDA.cpp 2012-03-22 02:07:50.000000000 +0400 +++ xbmc-11.0.my/xbmc/music/tags/MusicInfoTagLoaderCDDA.cpp 2013-01-09 14:40:10.670040454 +0400 @@ -27,6 +27,10 @@ #include "storage/MediaManager.h" #include "utils/log.h" +#define CDTEXT_TITLE CDTEXT_FIELD_TITLE +#define CDTEXT_PERFORMER CDTEXT_FIELD_PERFORMER +#define CDTEXT_GENRE CDTEXT_FIELD_GENRE + using namespace MUSIC_INFO; #ifdef HAS_DVD_DRIVE diff -wbBur xbmc-11.0/xbmc/storage/cdioSupport.cpp xbmc-11.0.my/xbmc/storage/cdioSupport.cpp --- xbmc-11.0/xbmc/storage/cdioSupport.cpp 2012-03-22 02:07:50.000000000 +0400 +++ xbmc-11.0.my/xbmc/storage/cdioSupport.cpp 2013-01-09 14:51:40.276801092 +0400 @@ -648,15 +648,18 @@ CSingleLock lock(*m_cdio); // Get the CD-Text , if any - cdtext_t *pcdtext = (cdtext_t *)::cdio_get_cdtext(cdio, trackNum); + cdtext_t *pcdtext = (cdtext_t *)::cdio_get_cdtext(cdio); if (pcdtext == NULL) return ; // same ids used in libcdio and for our structure + the ids are consecutive make this copy loop safe. for (int i = 0; i < MAX_CDTEXT_FIELDS; i++) - if (pcdtext->field[i]) - xcdt[(cdtext_field_t)i] = pcdtext->field[(cdtext_field_t)i]; + { + char *data = cdtext_get(pcdtext, (cdtext_field_t)i, trackNum); + if (data != NULL) + xcdt[(cdtext_field_t)i] = data; + } } CCdInfo* CCdIoSupport::GetCdInfo(char* cDeviceFileName)