packages feed

Hs2lib 0.5.1 → 0.5.2

raw patch · 7 files changed

+25/−8 lines, 7 files

Files

Hs2lib.cabal view
@@ -1,5 +1,5 @@ Name:           Hs2lib
-Version:        0.5.1
+Version:        0.5.2
 Cabal-Version:  >= 1.10
 Build-Type:     Custom
 License:        BSD3
LIMITS.txt view
@@ -1,3 +1,7 @@+Version 0.5.2
+ - No longer frees Strings, in order to prevent heap corruptions on calls
+   from C#.
+
 Version 0.5.1
  - Library bug fix which cauzed an error in marshalling
 
WinDll/CodeGen/C.hs view
@@ -71,8 +71,10 @@                                     else []
                      debugdefs = if debugging session 
                                     then case callconv of
-                                           StdCall -> [HaskellExport callconv ann $ Export "Ex.freeS" "freeS" ftType ftType modnm]
-                                           CCall   -> [HaskellExport callconv ann $ Export "Ex.freeC" "freeC" ftType ftType modnm]
+                                            StdCall -> [HaskellExport callconv ann $ Export "Ex.freeS"   "freeS"   ftType ftType modnm
+                                                       ,HaskellExport callconv ann $ Export "Ex.recordS" "recordS" ftType ftType modnm]
+                                            CCall   -> [HaskellExport callconv ann $ Export "Ex.freeC"   "freeC"   ftType ftType modnm
+                                                       ,HaskellExport callconv ann $ Export "Ex.recordS" "recordS" ftType ftType modnm]
                                     else []
                  
                  inform _detail "Creating export definition file"
WinDll/CodeGen/CSharp/CSharp.hs view
@@ -71,8 +71,10 @@                                      else []                       debugdefs = if debugging session                                       then case callconv of-                                            StdCall -> [HaskellExport callconv ann $ Export "Ex.freeS" "freeS" ftType ftType modnm]-                                            CCall   -> [HaskellExport callconv ann $ Export "Ex.freeC" "freeC" ftType ftType modnm]+                                            StdCall -> [HaskellExport callconv ann $ Export "Ex.freeS"   "freeS"   ftType ftType modnm+                                                       ,HaskellExport callconv ann $ Export "Ex.recordS" "recordS" ftType ftType modnm]+                                            CCall   -> [HaskellExport callconv ann $ Export "Ex.freeC"   "freeC"   ftType ftType modnm+                                                       ,HaskellExport callconv ann $ Export "Ex.recordS" "recordS" ftType ftType modnm]                                      else []                                     inform _detail "Creating C# structures & function header file"
WinDll/Debug/Exports.xhs view
@@ -26,8 +26,17 @@ foreign export stdcall "freeS" freeS :: Ptr () -> IO ()
 foreign export ccall "freeC" freeC :: Ptr () -> IO ()
 
+foreign export stdcall "recordS" freeS :: Ptr () -> IO ()
+foreign export ccall "recordC" freeC :: Ptr () -> IO ()
+
 freeS :: Ptr () -> IO ()
 freeS ptr = F.freeUnknown "[External Source]" ptr G.free
 
 freeC :: Ptr () -> IO ()
-freeC ptr = F.freeUnknown "[External Source]" ptr G.free+freeC ptr = F.freeUnknown "[External Source]" ptr G.free
+
+recordS :: Ptr () -> IO ()
+recordS ptr = F.freeUnknown "[External Source]" ptr (const (return ()))
+
+recordC :: Ptr () -> IO ()
+recordC ptr = F.freeUnknown "[External Source]" ptr (const (return ()))
WinDll/Lib/NativeMapping_Base.cpphs view
@@ -244,7 +244,7 @@     toNative   = RECORDM(__FILE__, __LINE__, "newCWString" , newCWString)
     fromNative _ST_ ptr = do {(RECORD( __FILE__, __LINE__, "peekCWString", id)) _ST_ ptr;
                               str <- peekCWString ptr;
-                              freeFFI _ST_ "" ptr;
+                              -- freeFFI _ST_ "" ptr;
                               return str;}
                         
     freeFFI    = FREE(   __FILE__, __LINE__, "freeCWString", F.free)
WinDll/Version/Hs2lib.hs view
@@ -19,7 +19,7 @@ 
 -- | Version Number
 verNum :: [Int]
-verNum = [0,5,1]
+verNum = [0,5,2]
 
 -- | Version string
 verStr :: String