]> git.lizzy.rs Git - rust.git/commitdiff
Remove a wrong multiplier on relocation offset computation
authorOliver Scherer <github35764891676564198441@oli-obk.de>
Mon, 17 Dec 2018 15:47:26 +0000 (16:47 +0100)
committerOliver Scherer <github35764891676564198441@oli-obk.de>
Mon, 17 Dec 2018 15:47:26 +0000 (16:47 +0100)
src/librustc_mir/interpret/memory.rs
src/test/ui/consts/promoted_regression.rs [new file with mode: 0644]

index 420fe26426321909d04583b086cb8aee15a3e6ea..65347a02be0c7cf103c8a763fba1e5e99027d69a 100644 (file)
@@ -707,10 +707,10 @@ pub fn copy_repeatedly(
                 new_relocations.extend(
                     relocations
                     .iter()
-                    .map(|&(offset, reloc)| {
-                    (offset + dest.offset - src.offset + (i * size * relocations.len() as u64),
-                     reloc)
-                    })
+                    .map(|&(offset, reloc)| (
+                        offset + dest.offset - src.offset + (i * size),
+                        reloc,
+                    ))
                 );
             }
 
diff --git a/src/test/ui/consts/promoted_regression.rs b/src/test/ui/consts/promoted_regression.rs
new file mode 100644 (file)
index 0000000..68b9a20
--- /dev/null
@@ -0,0 +1,9 @@
+// compile-pass
+
+fn main() {
+    let _ = &[("", ""); 3];
+}
+
+const FOO: &[(&str, &str)] = &[("", ""); 3];
+const BAR: &[(&str, &str); 5] = &[("", ""); 5];
+const BAA: &[[&str; 12]; 11] = &[[""; 12]; 11];