diff options
author | Bartosz Nitka <niteria@gmail.com> | 2016-10-06 05:40:24 -0700 |
---|---|---|
committer | Bartosz Nitka <niteria@gmail.com> | 2016-10-07 03:07:13 -0700 |
commit | e41b9c614984b63c4660018cecde682453e083e5 (patch) | |
tree | 21237358709a4b236b687dcc5187896695aef245 /libraries/base/tests | |
parent | cbe11d5fefefce518c246b470350a5a3bf8efbd6 (diff) | |
download | haskell-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.hs | 4 | ||||
-rw-r--r-- | libraries/base/tests/IO/environment001.stdout | 2 |
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 |