if (!symbol->is_objfile_owned ())
Py_RETURN_NONE;
- return symtab_to_symtab_object (symbol->symtab ());
+ return symtab_to_symtab_object (symbol->symtab ()).release ();
}
static PyObject *
if (sal->symtab == nullptr)
Py_RETURN_NONE;
else
- return symtab_to_symtab_object (sal->symtab);
+ return symtab_to_symtab_object (sal->symtab).release ();
}
/* Implementation of gdb.Symtab_and_line.is_valid (self) -> Boolean.
/* Create a new symbol table (gdb.Symtab) object that encapsulates the
symtab structure from GDB. */
-PyObject *
+gdbpy_ref<>
symtab_to_symtab_object (struct symtab *symtab)
{
symtab_object *symtab_obj;
symtab_obj = stpy_registry.lookup (symtab->compunit ()->objfile (),
symtab);
if (symtab_obj != nullptr)
- return (PyObject*)symtab_obj;
+ return gdbpy_ref<> (symtab_obj);
}
symtab_obj = PyObject_New (symtab_object, &symtab_object_type);
if (symtab_obj)
set_symtab (symtab_obj, symtab);
- return (PyObject *) symtab_obj;
+ return gdbpy_ref<> (symtab_obj);
}
/* Create a new symtab and line (gdb.Symtab_and_line) object
PyObject *kw);
gdbpy_ref<> symtab_and_line_to_sal_object (struct symtab_and_line sal);
-PyObject *symtab_to_symtab_object (struct symtab *symtab);
+gdbpy_ref<> symtab_to_symtab_object (struct symtab *symtab);
gdbpy_ref<> symbol_to_symbol_object (struct symbol *sym);
PyObject *block_to_block_object (const struct block *block,
struct objfile *objfile);