summaryrefslogtreecommitdiff
path: root/src/share/grabbag/cuesheet.c
diff options
context:
space:
mode:
authorJosh Coalson <jcoalson@users.sourceforce.net>2007-07-31 00:47:55 +0000
committerJosh Coalson <jcoalson@users.sourceforce.net>2007-07-31 00:47:55 +0000
commit29008f4fb5d55571d5260538dbd5024f9f7a19b3 (patch)
tree749ad8c0fb48818258273851fe79d8a395f3be79 /src/share/grabbag/cuesheet.c
parent4d8060421b18e931709da043c38f7c4341317a6b (diff)
downloadflac-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.c20
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)) {