#3948: unsafeCoerce leaks types
-------------------------------+--------------------------------------------
Reporter: ksf | Owner:
Type: bug | Status: closed
Priority: normal | Milestone:
Component: Template Haskell | Version: 6.12.1
Resolution: invalid | Keywords:
Difficulty: | Os: Linux
Testcase: | Architecture: x86_64 (amd64)
Failure: None/Unknown |
-------------------------------+--------------------------------------------
Changes (by simonmar):
* status: new => closed
* resolution: => invalid
Comment:
At the risk of being glib, this is an unsafe use of `unsafeCoerce`.
`Int32` is internally represented as an `Int#`, which is 64 bits on your
platform, but there's a representation invariant that the upper 32 bits
are guaranteed to be either all zero or all one. The invariant is
respected by all the operations on `Int32`, but by using `unsafeCoerce`
you created an invalid `Int32`.
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/3948#comment:1>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
_______________________________________________
Glasgow-haskell-bugs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs