[Haskell-cafe] corner case in Text.JSON 0.4.3

Iavor Diatchki iavor.diatchki at gmail.com
Wed May 12 16:21:06 EDT 2010


Hi,
I think it was probably I who wrote this, so I'll take the blame :-)
It seems like a genuine bug, where we are not checking for strings
that are not terminated.  Thanks for spotting it, and also for the
patch!  I'll try to update the package soon.
-Iavor

On Wed, May 12, 2010 at 12:53 PM, Martin Hilbig <martin at mhilbig.de> wrote:
> hi,
>
> since i got no answer from the maintainer, maybe someone else can take care
> of it, or at least point out, what i did wrong.
>
> so, i recently stumbled upon some error while using Text.JSON 0.4.3 [1]:
>
>  Text/JSON/String.hs:(127,4)-(137,49): Non-exhaustive patterns in case
>
> indeed ghc warned:
>
>  [5 of 7] Compiling Text.JSON.String ( Text/JSON/String.hs,
> dist/build/Text/JSON/String.o )
>
>  Text/JSON/String.hs:127:4:
>      Warning: Pattern match(es) are non-exhaustive
>               In a case alternative: Patterns not matched: []
>
> from looking at the code i couldn't see how this would ever happen, but you
> can reproduce it be running the files from [2]:
>
>  $ ./test < problem
>  Ok (JSArray [JSString (JSONString {fromJSString = "this"}),JSString
> (JSONString {fromJSString = "is"}),JSString (JSONString {fromJSString =
> "some"}),JSString (JSONString {fromJSString = "json"}),JSObject (JSONObject
> {fromJSObject = [("that",JSString (JSONString {fromJSString =
> "works"}))]})])
> test: Text/JSON/String.hs:(127,4)-(137,49): Non-exhaustive patterns in case
>
> the patch i put there fixes it (at least for me) to return an Error instead
> of dying:
>
>  $ ./test < problem
>  Ok (JSArray [JSString (JSONString {fromJSString = "this"}),JSString
> (JSONString {fromJSString = "is"}),JSString (JSONString {fromJSString =
> "some"}),JSString (JSONString {fromJSString = "json"}),JSObject (JSONObject
> {fromJSObject = [("that",JSString (JSONString {fromJSString =
> "works"}))]})])
>  Error "Unexpected end of String: does"
>  Error "Malformed JSON: invalid token in this context not\"]"
>  test: <stdin>: hGetLine: end of file
>
> have fun
> martin hilbig
>
> [1]: http://hackage.haskell.org/package/json
> [2]: http://friendpaste.com/3IvnChRMoczf0mIKpOtrYE
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>


More information about the Haskell-Cafe mailing list