Commit 12369af8 authored by Kevin Modzelewski's avatar Kevin Modzelewski

More ref fixes. working on functools_test

parent 295081f8
......@@ -49,7 +49,7 @@ PyAPI_DATA(PyTypeObject*) list_cls;
PyAPI_FUNC(PyObject *) PyList_New(Py_ssize_t size) PYSTON_NOEXCEPT;
PyAPI_FUNC(Py_ssize_t) PyList_Size(PyObject *) PYSTON_NOEXCEPT;
PyAPI_FUNC(PyObject *) PyList_GetItem(PyObject *, Py_ssize_t) PYSTON_NOEXCEPT;
PyAPI_FUNC(BORROWED(PyObject *)) PyList_GetItem(PyObject *, Py_ssize_t) PYSTON_NOEXCEPT;
PyAPI_FUNC(int) PyList_SetItem(PyObject *, Py_ssize_t, PyObject *) PYSTON_NOEXCEPT;
PyAPI_FUNC(int) PyList_Insert(PyObject *, Py_ssize_t, PyObject *) PYSTON_NOEXCEPT;
PyAPI_FUNC(int) PyList_Append(PyObject *, PyObject *) PYSTON_NOEXCEPT;
......
......@@ -659,6 +659,7 @@ extern "C" PyObject* PyObject_CallMethod(PyObject* o, const char* name, const ch
argspec = ArgPassSpec(1);
} else
argspec = ArgPassSpec(0);
AUTO_XDECREF(args);
retval = callattrInternal<ExceptionStyle::CAPI, NOT_REWRITABLE>(
o, autoDecref(internStringMortal(name)), CLASS_OR_INST, NULL, argspec, args, NULL, NULL, NULL, NULL);
if (!retval && !PyErr_Occurred())
......
......@@ -67,6 +67,7 @@ extern "C" PyObject* _PyImport_LoadDynamicModule(char* name, char* pathname, FIL
extern "C" PyObject* load_source_module(char* name, char* pathname, FILE* fp) noexcept {
BoxedString* name_boxed = boxString(name);
AUTO_DECREF(name_boxed);
try {
BoxedModule* module = createModule(name_boxed, pathname);
AST_Module* ast = caching_parse_file(pathname, /* future_flags = */ 0);
......@@ -79,7 +80,7 @@ extern "C" PyObject* load_source_module(char* name, char* pathname, FILE* fp) no
}
if (Py_VerboseFlag)
PySys_WriteStderr("import %s # from %s\n", name, pathname);
return r;
return incref(r);
} catch (ExcInfo e) {
removeModule(name_boxed);
setCAPIException(e);
......
......@@ -255,7 +255,7 @@ extern "C" Box* listGetitemInt(BoxedList* self, BoxedInt* slice) {
return incref(listGetitemUnboxed(self, slice->n));
}
extern "C" PyObject* PyList_GetItem(PyObject* op, Py_ssize_t i) noexcept {
extern "C" BORROWED(PyObject*) PyList_GetItem(PyObject* op, Py_ssize_t i) noexcept {
RELEASE_ASSERT(PyList_Check(op), "");
RELEASE_ASSERT(i >= 0, ""); // unlike list.__getitem__, PyList_GetItem doesn't do index wrapping
try {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment