summaryrefslogtreecommitdiff
path: root/libraries/base/tests
diff options
context:
space:
mode:
authorBartosz Nitka <niteria@gmail.com>2016-10-06 05:40:24 -0700
committerBartosz Nitka <niteria@gmail.com>2016-10-07 03:07:13 -0700
commite41b9c614984b63c4660018cecde682453e083e5 (patch)
tree21237358709a4b236b687dcc5187896695aef245 /libraries/base/tests
parentcbe11d5fefefce518c246b470350a5a3bf8efbd6 (diff)
downloadhaskell-e41b9c614984b63c4660018cecde682453e083e5.tar.gz
Fix memory leak from #12664
This fixes the leak with `setProgArgv`. The problem was that `setProgArgv` would not free the objects pointed to by `prog_argc`, `prog_argv` when the globals were changed resulting in a leak. The only strictly necessary change is in `rts/RtsFlags.c`, but the code in `System.Environment` was a bit confusing and not exception safe, so I refactored it. Test Plan: ./validate Reviewers: simonmar, ezyang, austin, hvr, bgamari, erikd Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D2576 GHC Trac Issues: #12664
Diffstat (limited to 'libraries/base/tests')
-rw-r--r--libraries/base/tests/IO/environment001.hs4
-rw-r--r--libraries/base/tests/IO/environment001.stdout2
2 files changed, 6 insertions, 0 deletions
diff --git a/libraries/base/tests/IO/environment001.hs b/libraries/base/tests/IO/environment001.hs
index 11d7912cdd..1d7a5c1c4a 100644
--- a/libraries/base/tests/IO/environment001.hs
+++ b/libraries/base/tests/IO/environment001.hs
@@ -14,3 +14,7 @@ main = do
[arg1] <- withArgs ["你好!"] getArgs
putStrLn arg1
putStrLn ("Test 3: " ++ show (length arg1))
+
+ args2 <- withArgs ["a", "b"] getArgs
+ print args2
+ putStrLn ("Test 4: " ++ show (length args2))
diff --git a/libraries/base/tests/IO/environment001.stdout b/libraries/base/tests/IO/environment001.stdout
index 2434d0c14d..2d32a83370 100644
--- a/libraries/base/tests/IO/environment001.stdout
+++ b/libraries/base/tests/IO/environment001.stdout
@@ -4,3 +4,5 @@ Test 1: 3
Test 2: 1
你好!
Test 3: 3
+["a","b"]
+Test 4: 2