Commit 1999f0daad

Andrew Kelley <superjoe30@gmail.com>
2018-04-13 17:10:17
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.
1 parent 0f652b4
Changed files (2)
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:
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();