packages feed

regex-posix 0.95.0 → 0.95.1

raw patch · 4 files changed

+29/−3 lines, 4 files

Files

Text/Regex/Posix/Wrap.hsc view
@@ -100,6 +100,9 @@  #include <sys/types.h> -- string.h is needed for memset++#include "myfree.h"+ #include "string.h"  #ifndef _POSIX_C_SOURCE@@ -333,9 +336,14 @@ -- ----------------------------------------------------------------------------- -- The POSIX regex C interface -foreign import ccall unsafe "string.h memset"+-- string.h+foreign import ccall unsafe "memset"   c_memset :: Ptr CRegex -> CInt -> CSize -> IO (Ptr CRegex) +-- c-finalizer/myfree.h and c-finalizer/myfree.c+foreign import ccall unsafe "&myregfree"+  c_myregfree :: FunPtr (Ptr CRegex -> IO ())+ #if __GLASGOW_HASKELL__ || __HUGS__  foreign import ccall unsafe "regcomp"@@ -457,7 +465,7 @@     Left ioerror -> return (Left (retOk,"Text.Regex.Posix.Wrap.wrapCompile: IOError from mallocBytes(regex_t) : "++show ioerror))     Right raw_regex_ptr -> do       zero_regex_ptr <- c_memset raw_regex_ptr 0 (#const sizeof(regex_t)) -- no calloc, so clear the new area to zero-      regex_fptr <- newForeignPtr c_regfree zero_regex_ptr -- once pointed-to area is clear it should be safe to add finalizer+      regex_fptr <- newForeignPtr c_myregfree zero_regex_ptr -- once pointed-to area is clear it should be safe to add finalizer       withForeignPtr regex_fptr $ \regex_ptr -> do  -- withForeignPtr is best hygiene here         errCode <- c_regcomp regex_ptr pattern flags         if (errCode == retOk)
+ c-finalizer/myfree.c view
@@ -0,0 +1,13 @@+#include "myfree.h"+#include "regex.h"+#include "stdlib.h"++/* +void free(void *ptr);+void regfree(regex_t *preg);+*/++void myregfree(void *preg) {+  regfree(preg);+  free(preg);+}
+ c-finalizer/myfree.h view
@@ -0,0 +1,2 @@+void myregfree(void *);+
regex-posix.cabal view
@@ -1,7 +1,7 @@ Name:                   regex-posix -- Keep the Version below in sync with ./Text/Regex/Posix.hs value -- getVersion_Text_Regex_Posix :: Version-Version:                0.95.0+Version:                0.95.1 Cabal-Version:          >=1.2 Build-Type:             Custom License:                BSD3@@ -19,6 +19,7 @@ Build-Type:             Simple Extra-Source-Files:     cbits/engine.c cbits/cclass.h cbits/cname.h                         cbits/regex2.h cbits/regex.h cbits/utils.h+                        c-finalizer/myfree.h c-finalizer/myfree.c  flag newBase   description: Choose base >= 4@@ -56,6 +57,8 @@       Build-Depends:      regex-base >= 0.93, base < 3.0       Extensions:         MultiParamTypeClasses, FunctionalDependencies, CPP +  C-Sources:            c-finalizer/myfree.c+  Include-Dirs:         c-finalizer   if !os(windows)     CC-Options:           -DHAVE_REGEX_H   else