From af5ab4d976bc5b638adad6e76cf12e3be7c2a709 Mon Sep 17 00:00:00 2001 From: Megvii Engine Team Date: Mon, 18 Jan 2021 13:12:15 +0800 Subject: [PATCH] fix(imperative/tensor): fix Py_DECREF on uninitialized pointer GitOrigin-RevId: 889255537ea351603bed2d60b60467b675d0dec1 --- imperative/python/src/tensor.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/imperative/python/src/tensor.cpp b/imperative/python/src/tensor.cpp index bce96e15..57c8f8ff 100644 --- a/imperative/python/src/tensor.cpp +++ b/imperative/python/src/tensor.cpp @@ -615,7 +615,7 @@ PyArray_Descr* _dtype_promotion(PyObject*const* args, size_t nargs) { SmallVector scalars; bool is_tuple = false; - PyObject* tuple; + PyObject* tuple = nullptr; if (nargs == 1 && (PyTuple_Check(args[0]) || PyList_Check(args[0]))) { if (PyList_Check(args[0])) { tuple = PyList_AsTuple(args[0]); @@ -664,13 +664,13 @@ PyArray_Descr* _dtype_promotion(PyObject*const* args, size_t nargs) { } for (auto *p: tensors) { Py_DECREF(p); } for (auto *p: scalars) { Py_DECREF(p); } - Py_DECREF(tuple); + Py_XDECREF(tuple); return res; } CompNode _get_device(PyObject*const* args, size_t nargs) { bool is_tuple = false; - PyObject* tuple; + PyObject* tuple = nullptr; if (nargs == 1 && (PyTuple_Check(args[0]) || PyList_Check(args[0]))) { if (PyList_Check(args[0])) { tuple = PyList_AsTuple(args[0]); @@ -702,7 +702,7 @@ CompNode _get_device(PyObject*const* args, size_t nargs) { if (!valid) { mgb_assert(0, "expect at least 1 device"); } - Py_DECREF(tuple); + Py_XDECREF(tuple); return cn; }