about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorErick Tryzelaar <erick.tryzelaar@gmail.com>2012-09-28 23:03:29 -0700
committerBrian Anderson <banderson@mozilla.com>2012-09-30 18:10:40 -0700
commitc71dc77dac5c8d477fc7df86607f98f2ee784f0f (patch)
tree2801a2bdb4692f8a27e4e437d725add6e64da688 /src
parentc756ec0c5e0dcc6b3e076167459869043a79731a (diff)
downloadrust-c71dc77dac5c8d477fc7df86607f98f2ee784f0f.tar.gz
rust-c71dc77dac5c8d477fc7df86607f98f2ee784f0f.zip
rustc: uniquely mangle expr_fn names
two closures in the same function body can end up having
the same mangled name. This small patch uses gensym to
uniquely name each closure body so there won't be conflicts.
Diffstat (limited to 'src')
-rw-r--r--src/rustc/middle/trans/closure.rs2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/rustc/middle/trans/closure.rs b/src/rustc/middle/trans/closure.rs
index 95c98126966..1ab25a18329 100644
--- a/src/rustc/middle/trans/closure.rs
+++ b/src/rustc/middle/trans/closure.rs
@@ -363,7 +363,7 @@ fn trans_expr_fn(bcx: block,
     let llfnty = type_of_fn_from_ty(ccx, fty);
     let sub_path = vec::append_one(bcx.fcx.path,
                                    path_name(special_idents::anon));
-    let s = mangle_internal_name_by_path(ccx, sub_path);
+    let s = mangle_internal_name_by_path_and_seq(ccx, sub_path, ~"expr_fn");
     let llfn = decl_internal_cdecl_fn(ccx.llmod, s, llfnty);
 
     let trans_closure_env = fn@(ck: ty::closure_kind) -> Result {