File tree Expand file tree Collapse file tree 1 file changed +11
-7
lines changed Expand file tree Collapse file tree 1 file changed +11
-7
lines changed Original file line number Diff line number Diff line change @@ -22,20 +22,24 @@ use pyo3::exceptions;
2222/// >>> demangle('invalid c++ symbol')
2323/// Traceback (most recent call last):
2424/// ...
25- /// ValueError: mangled symbol is not well-formed
25+ /// ValueError: ('Could not demangle symbol', ' mangled symbol is not well-formed')
2626#[ pymodule]
2727fn cpp_demangle ( _py : Python , m : & PyModule ) -> PyResult < ( ) > {
2828 // This adds a function to the python module:
2929 /// Demangles a mangled c++ linker symbol name and returns it as a string
3030 #[ pyfn( m) ]
3131 fn demangle ( mangled : String ) -> PyResult < String > {
32- match :: cpp_demangle:: Symbol :: new ( & mangled[ ..] ) {
33- // Return the output as a string to Python
34- Ok ( sym) => Ok ( sym. to_string ( ) ) ,
32+ let symbol = :: cpp_demangle:: Symbol :: new ( & mangled[ ..] ) . map_err ( |error| {
33+ exceptions:: PyValueError :: new_err ( ( "Could not demangle symbol" , error. to_string ( ) ) )
34+ } ) ?;
35+ let demangled = symbol. demangle ( & Default :: default ( ) ) . map_err ( |error| {
36+ exceptions:: PyValueError :: new_err ( (
37+ "Could not format demangled name as string" ,
38+ error. to_string ( ) ,
39+ ) )
40+ } ) ?;
3541
36- // on an error, this will raise a python ValueError exception!
37- Err ( error) => return Err ( exceptions:: PyValueError :: new_err ( error. to_string ( ) ) )
38- }
42+ Ok ( demangled)
3943 }
4044
4145 Ok ( ( ) )
You can’t perform that action at this time.
0 commit comments