1. memory leak: ob_refcnt of '*r' is 1 too high

    Report

    1
    static PyObject *
    _mysql_ConnectionObject_store_result(
    _mysql_ConnectionObject *self,
    PyObject *args)
    {
    PyObject *arglist=NULL, *kwarglist=NULL, *result=NULL;
    _mysql_ResultObject *r=NULL;
    if (!PyArg_ParseTuple(args, "")) return NULL;
    check_connection(self);
    arglist = Py_BuildValue("(OiO)", self, 0, self->converter);
    if (!arglist) goto error;
    kwarglist = PyDict_New();
    if (!kwarglist) goto error;
    r = MyAlloc(_mysql_ResultObject, _mysql_ResultObject_Type);
    if (!r) goto error;
    if (_mysql_ResultObject_Initialize(r, arglist, kwarglist))
    goto error;
    result = (PyObject *) r;
    if (!(r->result)) {
    // Py_DECREF(result);
    Py_INCREF(Py_None);
    result = Py_None;
    }
    error:
    Py_XDECREF(arglist);
    Py_XDECREF(kwarglist);
    return result;
    }
    1. when PyArg_ParseTuple() succeeds

      taking False path

    2. when considering range: -0x80000000 <= value <= -1

      taking False path

    3. when Py_BuildValue() succeeds

    4. taking False path

    5. when PyDict_New() succeeds

    6. taking False path

    7. when call succeeds

      '*r' was allocated at: r = MyAlloc(_mysql_ResultObject, _mysql_ResultObject_Type);

    8. taking False path

    9. when considering range: -0x80000000 <= value <= -1

      taking True path

    10. taking False path

      when taking True path

    11. taking False path

      when taking True path

    12. was expecting final owned ob_refcnt of '*r' to be 0 since nothing references it but final ob_refcnt is refs: 1 owned

      found 23 similar trace(s) to this

  2. returning (PyObject*)NULL without setting an exception

    Report

    2
    static PyObject *
    _mysql_ConnectionObject_store_result(
    _mysql_ConnectionObject *self,
    PyObject *args)
    {
    PyObject *arglist=NULL, *kwarglist=NULL, *result=NULL;
    _mysql_ResultObject *r=NULL;
    if (!PyArg_ParseTuple(args, "")) return NULL;
    check_connection(self);
    arglist = Py_BuildValue("(OiO)", self, 0, self->converter);
    if (!arglist) goto error;
    kwarglist = PyDict_New();
    if (!kwarglist) goto error;
    r = MyAlloc(_mysql_ResultObject, _mysql_ResultObject_Type);
    if (!r) goto error;
    if (_mysql_ResultObject_Initialize(r, arglist, kwarglist))
    goto error;
    result = (PyObject *) r;
    if (!(r->result)) {
    // Py_DECREF(result);
    Py_INCREF(Py_None);
    result = Py_None;
    }
    error:
    Py_XDECREF(arglist);
    Py_XDECREF(kwarglist);
    return result;
    }
    1. when PyArg_ParseTuple() succeeds

      taking False path

    2. when considering range: -0x80000000 <= value <= -1

      taking False path

    3. when Py_BuildValue() succeeds

    4. taking False path

    5. when PyDict_New() succeeds

    6. taking False path

    7. when call succeeds

    8. taking False path

    9. when considering range: -0x80000000 <= value <= -1

      taking True path

    10. taking False path

      when taking True path

    11. taking False path

      when taking True path

    12. found 15 similar trace(s) to this