commit 1999f0daad505f414f97845ecde0a56b3c2fedfd (tree)
parent 0f652b4d80a57f5b5a1054d06cd5767ce52402a1
Author: Andrew Kelley <superjoe30@gmail.com>
Date: Fri, 13 Apr 2018 11:10:17 -0400
fix undefined behavior triggered by fn inline test
LLVM destroys the string that we use to test if LLVM deleted the
inlined function.
Also fixed forgetting to initialize a buffer in std lib path detection.
Diffstat:
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/codegen.cpp b/src/codegen.cpp
@@ -467,7 +467,7 @@ static LLVMValueRef fn_llvm_value(CodeGen *g, FnTableEntry *fn_table_entry) {
fn_table_entry->llvm_value, buf_ptr(&fn_export->name));
}
}
- fn_table_entry->llvm_name = LLVMGetValueName(fn_table_entry->llvm_value);
+ fn_table_entry->llvm_name = strdup(LLVMGetValueName(fn_table_entry->llvm_value));
switch (fn_table_entry->fn_inline) {
case FnInlineAlways:
diff --git a/src/main.cpp b/src/main.cpp
@@ -179,6 +179,7 @@ static int find_zig_lib_dir(Buf *out_path) {
Buf self_exe_path = BUF_INIT;
if (!(err = os_self_exe_path(&self_exe_path))) {
Buf *cur_path = &self_exe_path;
+ buf_resize(cur_path, 0);
for (;;) {
Buf *test_dir = buf_alloc();