diff options
-rw-r--r-- | Lib/aifc.py | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/Lib/aifc.py b/Lib/aifc.py index 0849bd7..706bba8 100644 --- a/Lib/aifc.py +++ b/Lib/aifc.py @@ -379,7 +379,16 @@ class Aifc_read(): self._comm_chunk_read = 0 while formlength > 0: self._ssnd_seek_needed = 1 - chunk = Chunk().init(self._file) + #DEBUG: SGI's soundfiler has a bug. There should + # be no need to check for EOF here. + try: + chunk = Chunk().init(self._file) + except EOFError: + if formlength == 8: + print 'Warning: FORM chunk size too large' + formlength = 0 + break + raise EOFError # different error, raise exception formlength = formlength - 8 - chunk.chunksize if chunk.chunksize & 1: formlength = formlength - 1 @@ -495,6 +504,8 @@ class Aifc_read(): if pos: self._ssnd_chunk.setpos(pos + 8) self._ssnd_seek_needed = 0 + if nframes == 0: + return '' size = nframes * self._nchannels * self._sampwidth if self._decomp: if self._comptype in ('ULAW', 'ALAW'): |