Show
Ignore:
Timestamp:
05/26/05 14:38:41 (4 years ago)
Author:
autrijus
svk:copy_cache_prev:
5482
Message:

* castFail from SV no longer segfaults.
* all save one from method.t passes.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • src/Pugs/Embed/Perl5.hs

    r3901 r3911  
    2626svToVBool = constFail 
    2727 
    28 svToAny :: PerlSV -> IO a 
     28svToAny :: PerlSV -> IO (Maybe a) 
    2929svToAny = constFail 
    3030 
     
    7373    perl5_SvTRUE :: PerlSV -> IO Bool 
    7474foreign import ccall "perl5.h perl5_SvPtr" 
    75     perl5_SvPtr :: PerlSV -> IO (StablePtr a) 
     75    perl5_SvPtr :: PerlSV -> IO (Ptr ()) 
    7676foreign import ccall "perl5.h perl5_newSVpv" 
    7777    perl5_newSVpv :: CString -> IO PerlSV 
     
    7979    perl5_newSViv :: CInt -> IO PerlSV 
    8080foreign import ccall "perl5.h perl5_newSVptr" 
    81     perl5_newSVptr :: StablePtr a -> IO PerlSV 
     81    perl5_newSVptr :: Ptr () -> IO PerlSV 
    8282foreign import ccall "perl5.h perl5_call" 
    8383    perl5_call :: CString -> CInt -> Ptr PerlSV -> CInt -> IO PerlSV 
     
    103103anyToSV :: a -> IO PerlSV 
    104104anyToSV x = do 
    105     ptr <- newStablePtr x 
     105    ptr <- fmap castStablePtrToPtr $ newStablePtr x 
    106106    perl5_newSVptr ptr 
    107107 
    108 svToAny :: PerlSV -> IO a 
     108svToAny :: PerlSV -> IO (Maybe a) 
    109109svToAny sv = do 
    110110    ptr <- perl5_SvPtr sv 
    111     deRefStablePtr ptr 
     111    if ptr == nullPtr 
     112        then return Nothing 
     113        else fmap Just . deRefStablePtr $ castPtrToStablePtr ptr 
    112114 
    113115vstrToSV :: String -> IO PerlSV