mirror of
https://github.com/leanprover/lean4.git
synced 2026-03-17 10:24:07 +00:00
fix: incorrect borrow annotation on demangleBtLinCStr leading to segfault on panic (#12939)
This commit is contained in:
committed by
GitHub
parent
6714601ee4
commit
3c32607020
@@ -333,11 +333,7 @@ public def demangleBtLine (line : String) : Option String := do
|
||||
return pfx ++ demangled ++ sfx
|
||||
|
||||
@[export lean_demangle_bt_line_cstr]
|
||||
def demangleBtLineCStr (line : @& String) : String :=
|
||||
def demangleBtLineCStr (line : String) : String :=
|
||||
(demangleBtLine line).getD ""
|
||||
|
||||
@[export lean_demangle_symbol_cstr]
|
||||
def demangleSymbolCStr (symbol : @& String) : String :=
|
||||
(demangleSymbol symbol).getD ""
|
||||
|
||||
end Lean.Name.Demangle
|
||||
|
||||
@@ -34,7 +34,7 @@ Author: Leonardo de Moura
|
||||
// Lean-exported demangler from Lean.Compiler.NameDemangling.
|
||||
// Declared as a weak symbol so leanrt doesn't require libLean at link time.
|
||||
// When the Lean demangler is linked in, it overrides this stub.
|
||||
extern "C" __attribute__((weak)) lean_object * lean_demangle_bt_line_cstr(lean_object * s) {
|
||||
extern "C" __attribute__((weak)) lean_obj_res lean_demangle_bt_line_cstr(lean_obj_arg s) {
|
||||
lean_dec(s);
|
||||
return lean_mk_string("");
|
||||
}
|
||||
@@ -150,11 +150,9 @@ static void print_backtrace(bool force_stderr) {
|
||||
if (result_str[0] != '\0') {
|
||||
panic_eprintln(result_str, force_stderr);
|
||||
lean_dec(result);
|
||||
lean_dec(line_obj);
|
||||
continue;
|
||||
}
|
||||
lean_dec(result);
|
||||
lean_dec(line_obj);
|
||||
}
|
||||
panic_eprintln(symbols[i], force_stderr);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user