/* Python interface to stack frames
- Copyright (C) 2008-2017 Free Software Foundation, Inc.
+ Copyright (C) 2008-2018 Free Software Foundation, Inc.
This file is part of GDB.
frapy_name (PyObject *self, PyObject *args)
{
struct frame_info *frame;
- char *name = NULL;
+ gdb::unique_xmalloc_ptr<char> name;
enum language lang;
PyObject *result;
{
FRAPY_REQUIRE_VALID (self, frame);
- find_frame_funname (frame, &name, &lang, NULL);
+ name = find_frame_funname (frame, &lang, NULL);
}
CATCH (except, RETURN_MASK_ALL)
{
- xfree (name);
GDB_PY_HANDLE_EXCEPTION (except);
}
END_CATCH
if (name)
{
- result = PyUnicode_Decode (name, strlen (name), host_charset (), NULL);
- xfree (name);
+ result = PyUnicode_Decode (name.get (), strlen (name.get ()),
+ host_charset (), NULL);
}
else
{
TRY
{
- char *funname;
enum language funlang;
FRAPY_REQUIRE_VALID (self, frame);
- find_frame_funname (frame, &funname, &funlang, &sym);
- xfree (funname);
+ gdb::unique_xmalloc_ptr<char> funname
+ = find_frame_funname (frame, &funlang, &sym);
}
CATCH (except, RETURN_MASK_ALL)
{
frapy_find_sal (PyObject *self, PyObject *args)
{
struct frame_info *frame;
- struct symtab_and_line sal;
PyObject *sal_obj = NULL; /* Initialize to appease gcc warning. */
TRY
{
FRAPY_REQUIRE_VALID (self, frame);
- find_frame_sal (frame, &sal);
+ symtab_and_line sal = find_frame_sal (frame);
sal_obj = symtab_and_line_to_sal_object (sal);
}
CATCH (except, RETURN_MASK_ALL)