More tweaks to cue sheet loading code - feof(fp) is now checked for before fgets() is called, should allow final lines without a trailing line break to be parsed.

This commit is contained in:
OBattler
2019-10-20 14:47:02 +02:00
parent 9bf4c8fb5e
commit 93e6b9bc70

View File

@@ -609,16 +609,18 @@ CDROM_Interface_Image::CueLoadSheet(const wchar_t *cuefile)
char *line = buf; char *line = buf;
/* Read a line from the cuesheet file. */ /* Read a line from the cuesheet file. */
if (fgets(buf, sizeof(buf), fp) == NULL || ferror(fp) || feof(fp)) if (feof(fp) || fgets(buf, sizeof(buf), fp) == NULL || ferror(fp))
break; break;
/* Do two iterations to make sure to nuke even if it's \r\n or \n\r, /* Do two iterations to make sure to nuke even if it's \r\n or \n\r,
but do checks to make sure we're not nuking other bytes. */ but do checks to make sure we're not nuking other bytes. */
for (i = 0; i < 2; i++) { for (i = 0; i < 2; i++) {
if (buf[strlen(buf) - 1] == '\n') if (strlen(buf) > 0) {
buf[strlen(buf) - 1] = '\0'; /* nuke trailing newline */ if (buf[strlen(buf) - 1] == '\n')
else if (buf[strlen(buf) - 1] == '\r') buf[strlen(buf) - 1] = '\0'; /* nuke trailing newline */
buf[strlen(buf) - 1] = '\0'; /* nuke trailing newline */ else if (buf[strlen(buf) - 1] == '\r')
buf[strlen(buf) - 1] = '\0'; /* nuke trailing newline */
}
} }
string command; string command;