diff -r 30530f6c24bb Lib/sndhdr.py --- a/Lib/sndhdr.py Mon Mar 18 10:10:08 2013 -0700 +++ b/Lib/sndhdr.py Mon Mar 18 14:02:26 2013 -0400 @@ -137,14 +137,17 @@ def test_wav(h, f): - # 'RIFF' 'WAVE' 'fmt ' - if not h.startswith(b'RIFF') or h[8:12] != b'WAVE' or h[12:16] != b'fmt ': - return None - style = get_short_le(h[20:22]) - nchannels = get_short_le(h[22:24]) - rate = get_long_le(h[24:28]) - sample_bits = get_short_le(h[34:36]) - return 'wav', rate, nchannels, -1, sample_bits + import wave + # 'RIFF' 'WAVE' 'fmt ' + if not h.startswith(b'RIFF') or h[8:12] != b'WAVE' or h[12:16] != b'fmt ': + return None + f.seek(0) + try: + w = wave.openfp(f, 'r') + except (EOFError, wave.Error): + return None + return ('wav', w.getframerate(), w.getnchannels(), + w.getnframes(), 8*w.getsampwidth()) tests.append(test_wav) diff -r 30530f6c24bb Lib/test/test_sndhdr.py --- a/Lib/test/test_sndhdr.py Mon Mar 18 10:10:08 2013 -0700 +++ b/Lib/test/test_sndhdr.py Mon Mar 18 14:02:26 2013 -0400 @@ -12,7 +12,7 @@ ('sndhdr.hcom', ('hcom', 22050.0, 1, -1, 8)), ('sndhdr.sndt', ('sndt', 44100, 1, 5, 8)), ('sndhdr.voc', ('voc', 0, 1, -1, 8)), - ('sndhdr.wav', ('wav', 44100, 2, -1, 16)), + ('sndhdr.wav', ('wav', 44100, 2, 5, 16)), ): filename = findfile(filename, subdir="sndhdrdata") what = sndhdr.what(filename)