on master help sign in
Merge
commitbe09b9fbf7a12d991a4a131bbd6a5ccb39088842 authorBryan O'Sullivan <bos@serpentine.com> dateTue 2 Apr 2013, 19:25 (14 years ago) parentca73e2a8202871
1 file changed+11−6
Data/Aeson/Parser/Internal.hs+11−6
Data/Aeson/Parser/Internal.hs+11−6
@@ -37,7 +37,7 @@ import Data.ByteString as B
3737import Data.Char (chr)
3838import Data.Monoid (mappend, mempty)
3939import Data.Text as T
40−import Data.Text.Encoding (decodeUtf8)
40+import Data.Text.Encoding (decodeUtf8')
4141import Data.Vector as Vector hiding ((++))
4242import Data.Word (Word8)
4343import qualified Data.Attoparsec as A
@@ -175,11 +175,16 @@ jstring_ = {-# SCC "jstring_" #-} do
175175 then Nothing
176176 else Just (c == backslash)
177177 _ <- A.word8 doubleQuote
178− if backslash `B.elem` s
179− then case Z.parse unescape s of
180− Right r -> return (decodeUtf8 r)
181− Left err -> fail err
182− else return (decodeUtf8 s)
178+ s' <- if backslash `B.elem` s
179+ then case Z.parse unescape s of
180+ Right r -> return r
181+ Left err -> fail err
182+ else return s
183+
184+ case decodeUtf8' s' of
185+ Right r -> return r
186+ Left err -> fail $ show err
187+
183188{-# INLINE jstring_ #-}
184189
185190unescape :: Z.Parser ByteString