From c71dc77dac5c8d477fc7df86607f98f2ee784f0f Mon Sep 17 00:00:00 2001 From: Erick Tryzelaar Date: Fri, 28 Sep 2012 23:03:29 -0700 Subject: [PATCH] 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. --- src/rustc/middle/trans/closure.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rustc/middle/trans/closure.rs b/src/rustc/middle/trans/closure.rs index 95c981269668..1ab25a183293 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 {