From b00129b5c18be6b2ffba3519761d90bc7ad0764c Mon Sep 17 00:00:00 2001 From: Zubin Duggal Date: Mon, 22 Mar 2021 16:14:32 +0530 Subject: [PATCH] plug leak in bind --- src/Text/Parsec/Prim.hs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/Text/Parsec/Prim.hs b/src/Text/Parsec/Prim.hs index 1dfd7bd..9da4b48 100644 --- a/src/Text/Parsec/Prim.hs +++ b/src/Text/Parsec/Prim.hs @@ -318,7 +318,9 @@ parserBind m k = ParsecT $ \s cok cerr eok eerr -> let -- consumed-okay case for m - mcok x s err = + mcok x s err + | errorIsUnknown err = unParser (k x) s cok cerr cok cerr + | otherwise = let -- if (k x) consumes, those go straigt up pcok = cok @@ -335,7 +337,9 @@ parserBind m k in unParser (k x) s pcok pcerr peok peerr -- empty-ok case for m - meok x s err = + meok x s err + | errorIsUnknown err = unParser (k x) s cok cerr eok eerr + | otherwise = let -- in these cases, (k x) can return as empty pcok = cok