@@ -107,13 +107,16 @@ getOlson :: SizeLimits -> Get OlsonData
107107getOlson limits = do
108108 (version, part1) <- getOlsonPart True limits get32bitInteger
109109 -- There is one part for Version 1 format data, and two parts and a POSIX
110− -- TZ string for Version 2 format data
111− case version of
112− 0 -> return part1
113− 50 -> do (_, part2) <- getOlsonPart False limits get64bitInteger
114− posixTZ <- getPosixTZ
115− return $ part1 `mappend` part2 `mappend` posixTZ
116− _ -> verify (const False) "invalid version number" undefined
110+ -- TZ string for Version 2 or 3 format data
111+ case () of
112+ _ | version == 0 -> return part1
113+ | version == 50 || version == 51 -> do
114+ (_, part2) <- getOlsonPart False limits get64bitInteger
115+ posixTZ <- getPosixTZ
116+ return $ part1 `mappend` part2 `mappend` posixTZ
117+ | otherwise -> do
118+ let msg = "getOlson: invalid tzfile version " ++ toASCII [version]
119+ verify (const False) msg undefined
117120
118121-- Parse the part of an Olson file that contains timezone data
119122getOlsonPart :: Integral a => Bool -> SizeLimits -> Get a ->