Skip to content

Commit 1f3dd4f

Browse files
committed
Prevent different vtables with the same name
Fixes rust-lang#987
1 parent 9c0d18c commit 1f3dd4f

File tree

1 file changed

+4
-6
lines changed

1 file changed

+4
-6
lines changed

src/vtable.rs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -136,12 +136,13 @@ fn build_vtable<'tcx>(
136136
.module
137137
.declare_data(
138138
&format!(
139-
"__vtable.{}.for.{:?}",
139+
"__vtable.{}.for.{:?}.{}",
140140
trait_ref
141141
.as_ref()
142142
.map(|trait_ref| format!("{:?}", trait_ref.skip_binder()).into())
143143
.unwrap_or(std::borrow::Cow::Borrowed("???")),
144-
layout.ty
144+
layout.ty,
145+
fx.vtables.len(),
145146
),
146147
Linkage::Local,
147148
false,
@@ -158,10 +159,7 @@ fn build_vtable<'tcx>(
158159
)
159160
.unwrap();
160161

161-
match fx.module.define_data(data_id, &data_ctx) {
162-
Ok(()) | Err(cranelift_module::ModuleError::DuplicateDefinition(_)) => {}
163-
err => err.unwrap(),
164-
}
162+
fx.module.define_data(data_id, &data_ctx).unwrap();
165163

166164
data_id
167165
}

0 commit comments

Comments
 (0)