1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
diff --git a/Text/Regex/Posix/Wrap.hsc b/Text/Regex/Posix/Wrap.hsc
index d27b756..a43bcc3 100644
--- a/Text/Regex/Posix/Wrap.hsc
+++ b/Text/Regex/Posix/Wrap.hsc
@@ -102,7 +102,7 @@ module Text.Regex.Posix.Wrap(
-- string.h is needed for memset
#include "myfree.h"
-
+
#include "string.h"
#ifndef _POSIX_C_SOURCE
@@ -131,10 +131,19 @@ import Foreign(Ptr, FunPtr, nullPtr, newForeignPtr,
addForeignPtrFinalizer, Storable(peekByteOff), allocaArray,
allocaBytes, withForeignPtr,ForeignPtr,plusPtr,peekElemOff)
import Foreign.Marshal.Alloc(mallocBytes)
-import Foreign.C(CSize,CInt,CChar)
+import Foreign.C(CChar)
+#if __GLASGOW_HASKELL__ >= 703
+import Foreign.C(CSize(CSize),CInt(CInt))
+#else
+import Foreign.C(CSize,CInt)
+#endif
import Foreign.C.String(peekCAString, CString)
import Text.Regex.Base.RegexLike(RegexOptions(..),RegexMaker(..),RegexContext(..),MatchArray)
-import qualified System.IO.Error as IOERROR(try)
+-- deprecated: import qualified System.IO.Error as IOERROR(try)
+import qualified Control.Exception(try,IOException)
+
+try :: IO a -> IO (Either Control.Exception.IOException a)
+try = Control.Exception.try
type CRegex = () -- dummy regex_t used below to read out nsub value
@@ -349,8 +358,10 @@ foreign import ccall unsafe "&myregfree"
foreign import ccall unsafe "regcomp"
c_regcomp :: Ptr CRegex -> CString -> CompOption -> IO ReturnCode
+{- NOT USED
foreign import ccall unsafe "®free"
c_regfree :: FunPtr (Ptr CRegex -> IO ())
+-}
foreign import ccall unsafe "regexec"
c_regexec :: Ptr CRegex -> CString -> CSize
@@ -460,7 +471,7 @@ wrapError errCode regex_ptr = do
----------
wrapCompile flags e pattern = do
nullTest pattern "wrapCompile pattern" $ do
- e_regex_ptr <- IOERROR.try $ mallocBytes (#const sizeof(regex_t)) -- ioError called if nullPtr
+ e_regex_ptr <- try $ mallocBytes (#const sizeof(regex_t)) -- ioError called if nullPtr
case e_regex_ptr of
Left ioerror -> return (Left (retOk,"Text.Regex.Posix.Wrap.wrapCompile: IOError from mallocBytes(regex_t) : "++show ioerror))
Right raw_regex_ptr -> do
|