diff --git a/src/calibre/library/caches.py b/src/calibre/library/caches.py index e552ead591..46f3f4e7e9 100644 --- a/src/calibre/library/caches.py +++ b/src/calibre/library/caches.py @@ -921,7 +921,7 @@ class ResultCache(SearchQueryParser): # {{{ def remove(self, id): try: self._uuid_map.pop(self._data[id][self._uuid_column_index], None) - except IndexError: + except (IndexError, TypeError): pass # id is out of bounds -- no uuid in the map to remove try: self._data[id] = None diff --git a/src/calibre/library/cli.py b/src/calibre/library/cli.py index 012d88dace..a6ecca3721 100644 --- a/src/calibre/library/cli.py +++ b/src/calibre/library/cli.py @@ -199,15 +199,18 @@ def command_list(args, dbpath): afields.add('*'+f) if data['datatype'] == 'series': afields.add('*'+f+'_index') - fields = [str(f.strip().lower()) for f in opts.fields.split(',')] - if 'all' in fields: - fields = sorted(list(afields)) - if not set(fields).issubset(afields): - parser.print_help() - print - prints(_('Invalid fields. Available fields:'), - ','.join(sorted(afields)), file=sys.stderr) - return 1 + if opts.fields.strip(): + fields = [str(f.strip().lower()) for f in opts.fields.split(',')] + if 'all' in fields: + fields = sorted(list(afields)) + if not set(fields).issubset(afields): + parser.print_help() + print + prints(_('Invalid fields. Available fields:'), + ','.join(sorted(afields)), file=sys.stderr) + return 1 + else: + fields = [] if not opts.sort_by in afields and opts.sort_by is not None: parser.print_help()