diff options
Diffstat (limited to 'libraries/base/GHC/Stable.hs')
-rw-r--r-- | libraries/base/GHC/Stable.hs | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/libraries/base/GHC/Stable.hs b/libraries/base/GHC/Stable.hs index 1ea0d6d166..3cd26302f4 100644 --- a/libraries/base/GHC/Stable.hs +++ b/libraries/base/GHC/Stable.hs @@ -31,6 +31,8 @@ module GHC.Stable ( import GHC.Ptr import GHC.Base +import Unsafe.Coerce ( unsafeCoerceAddr ) + ----------------------------------------------------------------------------- -- Stable Pointers @@ -85,7 +87,7 @@ foreign import ccall unsafe "hs_free_stable_ptr" freeStablePtr :: StablePtr a -> -- undefined behaviour. -- castStablePtrToPtr :: StablePtr a -> Ptr () -castStablePtrToPtr (StablePtr s) = Ptr (unsafeCoerce# s) +castStablePtrToPtr (StablePtr s) = Ptr (unsafeCoerceAddr s) -- | @@ -99,7 +101,7 @@ castStablePtrToPtr (StablePtr s) = Ptr (unsafeCoerce# s) -- 'castStablePtrToPtr'. -- castPtrToStablePtr :: Ptr () -> StablePtr a -castPtrToStablePtr (Ptr a) = StablePtr (unsafeCoerce# a) +castPtrToStablePtr (Ptr a) = StablePtr (unsafeCoerceAddr a) -- | @since 2.01 instance Eq (StablePtr a) where |