fix: incorrect borrow annotation on demangleBtLinCStr leading to segfault on panic (#12939)

This commit is contained in:
Sebastian Ullrich
2026-03-17 10:24:57 +01:00
committed by GitHub
parent 6714601ee4
commit 3c32607020
2 changed files with 3 additions and 9 deletions

View File

@@ -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

View File

@@ -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);
}