summaryrefslogtreecommitdiff
path: root/libraries/base/tests/stableptr001.hs
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/base/tests/stableptr001.hs')
-rw-r--r--libraries/base/tests/stableptr001.hs19
1 files changed, 19 insertions, 0 deletions
diff --git a/libraries/base/tests/stableptr001.hs b/libraries/base/tests/stableptr001.hs
new file mode 100644
index 0000000000..1bc857aba6
--- /dev/null
+++ b/libraries/base/tests/stableptr001.hs
@@ -0,0 +1,19 @@
+
+module Main where
+
+import Foreign
+
+-- simple test for building/dereferencing stable ptrs
+
+main
+ = do l <- mapM newStablePtr [1..100000]
+ sum <- stable_sum l
+ print sum
+
+stable_sum :: [StablePtr Integer] -> IO Integer
+stable_sum [] = return 0
+stable_sum (x:xs)
+ = do x' <- deRefStablePtr x
+ freeStablePtr x
+ xs' <- stable_sum xs
+ return (x' + xs')