From 6c8b7101fbe74055e19b1d9eec53597aa5b96b69 Mon Sep 17 00:00:00 2001 From: konsumlamm Date: Mon, 20 Apr 2026 15:20:19 +0200 Subject: [PATCH] Fail on zero denominator in `Binary (Ratio a)` instance --- src/Data/Binary/Class.hs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Data/Binary/Class.hs b/src/Data/Binary/Class.hs index 1efbe37..1cd5016 100644 --- a/src/Data/Binary/Class.hs +++ b/src/Data/Binary/Class.hs @@ -491,7 +491,10 @@ freezeByteArray arr = IO $ \s -> instance (Binary a,Integral a) => Binary (R.Ratio a) where put r = put (R.numerator r) <> put (R.denominator r) - get = liftM2 (R.%) get get + get = do + n <- get + d <- get + if d == 0 then fail "zero denominator" else pure (n R.% d) instance Binary a => Binary (Complex a) where {-# INLINE put #-}