Show
Ignore:
Timestamp:
05/31/05 03:47:07 (4 years ago)
Author:
autrijus
svk:copy_cache_prev:
5706
Message:

* handle multiple return values. It segfaults still --

clkao, please take a look.

Files:
1 modified

Legend:

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

    r3975 r4184  
    5151vnumToSV = constFail 
    5252 
    53 callPerl5 :: PerlSV -> PerlSV -> [PerlSV] -> PerlSV -> CInt -> IO PerlSV 
     53callPerl5 :: PerlSV -> PerlSV -> [PerlSV] -> PerlSV -> CInt -> IO [PerlSV] 
    5454callPerl5 _ _ _ _ = constFail 
    5555 
     
    109109    perl5_get_sv :: CString -> IO PerlSV 
    110110foreign import ccall "perl5.h perl5_apply" 
    111     perl5_apply :: PerlSV -> PerlSV -> Ptr PerlSV -> PugsVal -> CInt -> IO PerlSV 
     111    perl5_apply :: PerlSV -> PerlSV -> Ptr PerlSV -> PugsVal -> CInt -> IO (Ptr PerlSV) 
    112112foreign import ccall "perl5.h perl5_can" 
    113113    perl5_can :: PerlSV -> CString -> IO Bool 
     
    171171vnumToSV int = perl5_newSVnv (realToFrac int) 
    172172 
    173 callPerl5 :: PerlSV -> PerlSV -> [PerlSV] -> PugsVal -> CInt -> IO PerlSV 
     173callPerl5 :: PerlSV -> PerlSV -> [PerlSV] -> PugsVal -> CInt -> IO [PerlSV] 
    174174callPerl5 sub inv args env cxt = do 
    175175    withArray0 nullPtr args $ \argv -> do 
    176         perl5_apply sub inv argv env cxt 
     176        rv <- perl5_apply sub inv argv env cxt 
     177        peekArray0 nullPtr rv 
    177178 
    178179canPerl5 :: PerlSV -> String -> IO Bool