summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2012-03-02 20:04:22 -0800
committerBrian Anderson <banderson@mozilla.com>2012-03-02 20:13:52 -0800
commit38b2b74413da1d982df82fbb9552373b7dc52e69 (patch)
tree3fef2d071778e6ca4c2e616ecea4e519f44fa5fd /src
parent6b0c4822c10d1e0824043f81fc9e39096cc40172 (diff)
downloadrust-38b2b74413da1d982df82fbb9552373b7dc52e69.tar.gz
rust-38b2b74413da1d982df82fbb9552373b7dc52e69.zip
rt: Move RUST_POISON_ON_FREE into rust_env
Diffstat (limited to 'src')
-rw-r--r--src/rt/memory_region.cpp8
-rw-r--r--src/rt/rust_env.cpp2
-rw-r--r--src/rt/rust_env.h1
3 files changed, 4 insertions, 7 deletions
diff --git a/src/rt/memory_region.cpp b/src/rt/memory_region.cpp
index 29099fb14f2..e4130e80f5a 100644
--- a/src/rt/memory_region.cpp
+++ b/src/rt/memory_region.cpp
@@ -204,14 +204,8 @@ memory_region::claim_alloc(void *mem) {
 
 void
 memory_region::maybe_poison(void *mem) {
-    // TODO: We should lock this, in case the compiler doesn't.
-    static int poison = -1;
-    if (poison < 0) {
-        char *env_str = getenv("RUST_POISON_ON_FREE");
-        poison = env_str != NULL && env_str[0] != '\0';
-    }
 
-    if (!poison)
+    if (!_srv->env->poison_on_free)
         return;
 
 #   if RUSTRT_TRACK_ALLOCATIONS >= 1
diff --git a/src/rt/rust_env.cpp b/src/rt/rust_env.cpp
index bdec4c28435..ab9bf9d75fa 100644
--- a/src/rt/rust_env.cpp
+++ b/src/rt/rust_env.cpp
@@ -13,6 +13,7 @@
 #define CHECK_CLAIMS "CHECK_CLAIMS"
 #define DETAILED_LEAKS "DETAILED_LEAKS"
 #define RUST_SEED "RUST_SEED"
+#define RUST_POISON_ON_FREE "RUST_POISON_ON_FREE"
 
 #if defined(__WIN32__)
 static int
@@ -116,6 +117,7 @@ load_env() {
     env->check_claims = getenv(CHECK_CLAIMS) != NULL;
     env->detailed_leaks = getenv(DETAILED_LEAKS) != NULL;
     env->rust_seed = copyenv(RUST_SEED);
+    env->poison_on_free = getenv(RUST_POISON_ON_FREE) != NULL;
 
     return env;
 }
diff --git a/src/rt/rust_env.h b/src/rt/rust_env.h
index eecdb7931b4..adf3dc8a7d4 100644
--- a/src/rt/rust_env.h
+++ b/src/rt/rust_env.h
@@ -6,6 +6,7 @@ struct rust_env {
     bool check_claims;
     bool detailed_leaks;
     char* rust_seed;
+    bool poison_on_free;
 };
 
 rust_env* load_env();