From 3e61c3dc1b8ed0efa2a19f5258bdf77039345465 Mon Sep 17 00:00:00 2001 From: JoeLametta Date: Thu, 19 Nov 2020 15:36:48 +0000 Subject: [PATCH] Fix 'list index out of range' bug It was introduced in commit acf942b5b602318ac5b10efd42a4855827964c5f. The error happens because 'self.itable.tracks' is a list of tracks (zero-based numbering, HTOA excluded) so the first track can be accessed with 'self.itable.tracks[0]' but when 'number' has value 0, that matches the HTOA (everything is shifted by one compared to 'self.itable.tracks'). It's unrelated to this bugfix but I've also moved some instructions outside the try ... except clause. Fixes #512. Signed-off-by: JoeLametta --- whipper/command/cd.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/whipper/command/cd.py b/whipper/command/cd.py index a8695de..853902b 100644 --- a/whipper/command/cd.py +++ b/whipper/command/cd.py @@ -446,13 +446,16 @@ Log files will log the path to tracks relative to this directory. logger.info('ripping track %d of %d%s: %s', number, len(self.itable.tracks), extra, os.path.basename(path)) + + logger.debug('ripIfNotRipped: track %d, try %d', number, + tries) + tag_list = self.program.getTagList(number, self.mbdiscid) + # An HTOA can't have an ISRC value + if (number > 0 and + self.itable.tracks[number - 1].isrc is not None): + tag_list['ISRC'] = self.itable.tracks[number - 1].isrc + try: - logger.debug('ripIfNotRipped: track %d, try %d', - number, tries) - tag_list = self.program.getTagList(number, - self.mbdiscid) - if self.itable.tracks[number].isrc is not None: - tag_list['ISRC'] = self.itable.tracks[number].isrc self.program.ripTrack(self.runner, trackResult, offset=int(self.options.offset), device=self.device,