diff options
author | Josh Coalson <jcoalson@users.sourceforce.net> | 2007-07-31 00:47:55 +0000 |
---|---|---|
committer | Josh Coalson <jcoalson@users.sourceforce.net> | 2007-07-31 00:47:55 +0000 |
commit | 29008f4fb5d55571d5260538dbd5024f9f7a19b3 (patch) | |
tree | 749ad8c0fb48818258273851fe79d8a395f3be79 /src/share/grabbag/cuesheet.c | |
parent | 4d8060421b18e931709da043c38f7c4341317a6b (diff) | |
download | flac-29008f4fb5d55571d5260538dbd5024f9f7a19b3.tar.gz |
Fixed bug where importing non-CDDA cuesheets would cause an invalid lead-out track number; also add requirement for non-CDDA lead-out track number to be 255 (SF#1764105: https://sourceforge.net/tracker/index.php?func=detail&aid=1764105&group_id=13478&atid=113478).
Diffstat (limited to 'src/share/grabbag/cuesheet.c')
-rw-r--r-- | src/share/grabbag/cuesheet.c | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/src/share/grabbag/cuesheet.c b/src/share/grabbag/cuesheet.c index e5215525..03f7cdaa 100644 --- a/src/share/grabbag/cuesheet.c +++ b/src/share/grabbag/cuesheet.c @@ -398,9 +398,21 @@ static FLAC__bool local__cuesheet_parse_(FILE *file, const char **error_message, *error_message = "TRACK number must be greater than 0"; return false; } - if(is_cdda && in_track_num > 99) { - *error_message = "CD-DA TRACK number must be between 1 and 99, inclusive"; - return false; + if(is_cdda) { + if(in_track_num > 99) { + *error_message = "CD-DA TRACK number must be between 1 and 99, inclusive"; + return false; + } + } + else { + if(in_track_num == 255) { + *error_message = "TRACK number 255 is reserved for the lead-out"; + return false; + } + else if(in_track_num > 255) { + *error_message = "TRACK number must be between 1 and 254, inclusive"; + return false; + } } if(is_cdda && cs->num_tracks > 0 && in_track_num != cs->tracks[cs->num_tracks-1].number + 1) { *error_message = "CD-DA TRACK numbers must be sequential"; @@ -503,7 +515,7 @@ static FLAC__bool local__cuesheet_parse_(FILE *file, const char **error_message, } if(!has_forced_leadout) { - forced_leadout_track_num = is_cdda? 170 : cs->num_tracks; + forced_leadout_track_num = is_cdda? 170 : 255; forced_leadout_track_offset = lead_out_offset; } if(!FLAC__metadata_object_cuesheet_insert_blank_track(cuesheet, cs->num_tracks)) { |