1. memory leak: ob_refcnt of new ref from (unknown) PyUnicodeUCS4_FromString is 1 too high

    Report

    1
    static PyObject *
    _mysql_ConnectionObject_get_character_set_info(
    _mysql_ConnectionObject *self,
    PyObject *args)
    {
    PyObject *result;
    MY_CHARSET_INFO cs;
    if (!PyArg_ParseTuple(args, "")) return NULL;
    check_connection(self);
    mysql_get_character_set_info(&(self->connection), &cs);
    if (!(result = PyDict_New())) return NULL;
    if (cs.csname)
    PyDict_SetItemString(result, "name", PyUnicode_FromString(cs.csname));
    if (cs.name)
    PyDict_SetItemString(result, "collation", PyUnicode_FromString(cs.name));
    if (cs.comment)
    PyDict_SetItemString(result, "comment", PyUnicode_FromString(cs.comment));
    if (cs.dir)
    PyDict_SetItemString(result, "dir", PyUnicode_FromString(cs.dir));
    PyDict_SetItemString(result, "mbminlen", PyInt_FromLong(cs.mbminlen));
    PyDict_SetItemString(result, "mbmaxlen", PyInt_FromLong(cs.mbmaxlen));
    return result;
    }
    #endif
    1. was expecting final owned ob_refcnt of new ref from (unknown) PyUnicodeUCS4_FromString to be 0 since nothing references it but final ob_refcnt is refs: 1 owned

      found 335 similar trace(s) to this

    2. when PyArg_ParseTuple() succeeds

      taking False path

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

      taking False path

    4. when PyDict_New() succeeds

      taking False path

    5. when treating unknown const char * from _mysql.c:1717 as non-NULL

      taking True path

    6. when PyUnicodeUCS4_FromString() succeeds

      when PyDict_SetItemString() fails

      new ref from (unknown) PyUnicodeUCS4_FromString was allocated at: PyDict_SetItemString(result, "name", PyUnicode_FromString(cs.csname));

    7. when treating unknown const char * from _mysql.c:1719 as non-NULL

      taking True path

    8. when PyUnicodeUCS4_FromString() succeeds

      when PyDict_SetItemString() succeeds

    9. when treating unknown const char * from _mysql.c:1721 as non-NULL

      taking True path

    10. when PyUnicodeUCS4_FromString() succeeds

      when PyDict_SetItemString() succeeds

    11. when treating unknown const char * from _mysql.c:1723 as non-NULL

      taking True path

    12. when PyUnicodeUCS4_FromString() succeeds

      when PyDict_SetItemString() succeeds

    13. when PyInt_FromLong() succeeds

      when PyDict_SetItemString() fails

    14. when PyInt_FromLong() succeeds

      when PyDict_SetItemString() succeeds

  2. memory leak: ob_refcnt of PyIntObject is 1 too high

    Report

    2
    static PyObject *
    _mysql_ConnectionObject_get_character_set_info(
    _mysql_ConnectionObject *self,
    PyObject *args)
    {
    PyObject *result;
    MY_CHARSET_INFO cs;
    if (!PyArg_ParseTuple(args, "")) return NULL;
    check_connection(self);
    mysql_get_character_set_info(&(self->connection), &cs);
    if (!(result = PyDict_New())) return NULL;
    if (cs.csname)
    PyDict_SetItemString(result, "name", PyUnicode_FromString(cs.csname));
    if (cs.name)
    PyDict_SetItemString(result, "collation", PyUnicode_FromString(cs.name));
    if (cs.comment)
    PyDict_SetItemString(result, "comment", PyUnicode_FromString(cs.comment));
    if (cs.dir)
    PyDict_SetItemString(result, "dir", PyUnicode_FromString(cs.dir));
    PyDict_SetItemString(result, "mbminlen", PyInt_FromLong(cs.mbminlen));
    PyDict_SetItemString(result, "mbmaxlen", PyInt_FromLong(cs.mbmaxlen));
    return result;
    }
    #endif
    1. was expecting final owned ob_refcnt of PyIntObject to be 0 since nothing references it but final ob_refcnt is refs: 1 owned

      found 221 similar trace(s) to this

    2. when PyArg_ParseTuple() succeeds

      taking False path

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

      taking False path

    4. when PyDict_New() succeeds

      taking False path

    5. when treating unknown const char * from _mysql.c:1717 as non-NULL

      taking True path

    6. when PyUnicodeUCS4_FromString() succeeds

      when PyDict_SetItemString() fails

    7. when treating unknown const char * from _mysql.c:1719 as non-NULL

      taking True path

    8. when PyUnicodeUCS4_FromString() succeeds

      when PyDict_SetItemString() succeeds

    9. when treating unknown const char * from _mysql.c:1721 as non-NULL

      taking True path

    10. when PyUnicodeUCS4_FromString() succeeds

      when PyDict_SetItemString() succeeds

    11. when treating unknown const char * from _mysql.c:1723 as non-NULL

      taking True path

    12. when PyUnicodeUCS4_FromString() succeeds

      when PyDict_SetItemString() succeeds

    13. when PyInt_FromLong() succeeds

      when PyDict_SetItemString() fails

      PyIntObject was allocated at: PyDict_SetItemString(result, "mbminlen", PyInt_FromLong(cs.mbminlen));

    14. when PyInt_FromLong() succeeds

      when PyDict_SetItemString() succeeds

  3. calling PyDict_SetItemString with NULL as argument 3 (D.15325) at _mysql.c:1726

    Report

    3
    static PyObject *
    _mysql_ConnectionObject_get_character_set_info(
    _mysql_ConnectionObject *self,
    PyObject *args)
    {
    PyObject *result;
    MY_CHARSET_INFO cs;
    if (!PyArg_ParseTuple(args, "")) return NULL;
    check_connection(self);
    mysql_get_character_set_info(&(self->connection), &cs);
    if (!(result = PyDict_New())) return NULL;
    if (cs.csname)
    PyDict_SetItemString(result, "name", PyUnicode_FromString(cs.csname));
    if (cs.name)
    PyDict_SetItemString(result, "collation", PyUnicode_FromString(cs.name));
    if (cs.comment)
    PyDict_SetItemString(result, "comment", PyUnicode_FromString(cs.comment));
    if (cs.dir)
    PyDict_SetItemString(result, "dir", PyUnicode_FromString(cs.dir));
    PyDict_SetItemString(result, "mbminlen", PyInt_FromLong(cs.mbminlen));
    PyDict_SetItemString(result, "mbmaxlen", PyInt_FromLong(cs.mbmaxlen));
    return result;
    }
    #endif
    1. when PyArg_ParseTuple() succeeds

      taking False path

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

      taking False path

    3. when PyDict_New() succeeds

      taking False path

    4. when treating unknown const char * from _mysql.c:1717 as non-NULL

      taking True path

    5. when PyUnicodeUCS4_FromString() succeeds

      when PyDict_SetItemString() fails

    6. when treating unknown const char * from _mysql.c:1719 as non-NULL

      taking True path

    7. when PyUnicodeUCS4_FromString() succeeds

      when PyDict_SetItemString() succeeds

    8. when treating unknown const char * from _mysql.c:1721 as non-NULL

      taking True path

    9. when PyUnicodeUCS4_FromString() succeeds

      when PyDict_SetItemString() succeeds

    10. when treating unknown const char * from _mysql.c:1723 as non-NULL

      taking True path

    11. when PyUnicodeUCS4_FromString() succeeds

      when PyDict_SetItemString() succeeds

    12. when PyInt_FromLong() succeeds

      when PyDict_SetItemString() succeeds

    13. when PyInt_FromLong() fails

      found 54 similar trace(s) to this

  4. calling PyDict_SetItemString with NULL as argument 3 (D.15322) at _mysql.c:1725

    Report

    4
    static PyObject *
    _mysql_ConnectionObject_get_character_set_info(
    _mysql_ConnectionObject *self,
    PyObject *args)
    {
    PyObject *result;
    MY_CHARSET_INFO cs;
    if (!PyArg_ParseTuple(args, "")) return NULL;
    check_connection(self);
    mysql_get_character_set_info(&(self->connection), &cs);
    if (!(result = PyDict_New())) return NULL;
    if (cs.csname)
    PyDict_SetItemString(result, "name", PyUnicode_FromString(cs.csname));
    if (cs.name)
    PyDict_SetItemString(result, "collation", PyUnicode_FromString(cs.name));
    if (cs.comment)
    PyDict_SetItemString(result, "comment", PyUnicode_FromString(cs.comment));
    if (cs.dir)
    PyDict_SetItemString(result, "dir", PyUnicode_FromString(cs.dir));
    PyDict_SetItemString(result, "mbminlen", PyInt_FromLong(cs.mbminlen));
    PyDict_SetItemString(result, "mbmaxlen", PyInt_FromLong(cs.mbmaxlen));
    return result;
    }
    #endif
    1. when PyArg_ParseTuple() succeeds

      taking False path

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

      taking False path

    3. when PyDict_New() succeeds

      taking False path

    4. when treating unknown const char * from _mysql.c:1717 as non-NULL

      taking True path

    5. when PyUnicodeUCS4_FromString() succeeds

      when PyDict_SetItemString() succeeds

    6. when treating unknown const char * from _mysql.c:1719 as non-NULL

      taking True path

    7. when PyUnicodeUCS4_FromString() succeeds

      when PyDict_SetItemString() succeeds

    8. when treating unknown const char * from _mysql.c:1721 as non-NULL

      taking True path

    9. when PyUnicodeUCS4_FromString() succeeds

      when PyDict_SetItemString() succeeds

    10. when treating unknown const char * from _mysql.c:1723 as non-NULL

      taking True path

    11. when PyUnicodeUCS4_FromString() succeeds

      when PyDict_SetItemString() succeeds

    12. when PyInt_FromLong() fails

      found 26 similar trace(s) to this

  5. calling PyDict_SetItemString with NULL as argument 3 (D.15319) at _mysql.c:1724

    Report

    5
    static PyObject *
    _mysql_ConnectionObject_get_character_set_info(
    _mysql_ConnectionObject *self,
    PyObject *args)
    {
    PyObject *result;
    MY_CHARSET_INFO cs;
    if (!PyArg_ParseTuple(args, "")) return NULL;
    check_connection(self);
    mysql_get_character_set_info(&(self->connection), &cs);
    if (!(result = PyDict_New())) return NULL;
    if (cs.csname)
    PyDict_SetItemString(result, "name", PyUnicode_FromString(cs.csname));
    if (cs.name)
    PyDict_SetItemString(result, "collation", PyUnicode_FromString(cs.name));
    if (cs.comment)
    PyDict_SetItemString(result, "comment", PyUnicode_FromString(cs.comment));
    if (cs.dir)
    PyDict_SetItemString(result, "dir", PyUnicode_FromString(cs.dir));
    PyDict_SetItemString(result, "mbminlen", PyInt_FromLong(cs.mbminlen));
    PyDict_SetItemString(result, "mbmaxlen", PyInt_FromLong(cs.mbmaxlen));
    return result;
    }
    #endif
    1. when PyArg_ParseTuple() succeeds

      taking False path

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

      taking False path

    3. when PyDict_New() succeeds

      taking False path

    4. when treating unknown const char * from _mysql.c:1717 as non-NULL

      taking True path

    5. when PyUnicodeUCS4_FromString() succeeds

      when PyDict_SetItemString() succeeds

    6. when treating unknown const char * from _mysql.c:1719 as non-NULL

      taking True path

    7. when PyUnicodeUCS4_FromString() succeeds

      when PyDict_SetItemString() succeeds

    8. when treating unknown const char * from _mysql.c:1721 as non-NULL

      taking True path

    9. when PyUnicodeUCS4_FromString() succeeds

      when PyDict_SetItemString() succeeds

    10. when treating unknown const char * from _mysql.c:1723 as non-NULL

      taking True path

    11. when PyUnicodeUCS4_FromString() fails

      found 8 similar trace(s) to this

  6. calling PyDict_SetItemString with NULL as argument 3 (D.15315) at _mysql.c:1722

    Report

    6
    static PyObject *
    _mysql_ConnectionObject_get_character_set_info(
    _mysql_ConnectionObject *self,
    PyObject *args)
    {
    PyObject *result;
    MY_CHARSET_INFO cs;
    if (!PyArg_ParseTuple(args, "")) return NULL;
    check_connection(self);
    mysql_get_character_set_info(&(self->connection), &cs);
    if (!(result = PyDict_New())) return NULL;
    if (cs.csname)
    PyDict_SetItemString(result, "name", PyUnicode_FromString(cs.csname));
    if (cs.name)
    PyDict_SetItemString(result, "collation", PyUnicode_FromString(cs.name));
    if (cs.comment)
    PyDict_SetItemString(result, "comment", PyUnicode_FromString(cs.comment));
    if (cs.dir)
    PyDict_SetItemString(result, "dir", PyUnicode_FromString(cs.dir));
    PyDict_SetItemString(result, "mbminlen", PyInt_FromLong(cs.mbminlen));
    PyDict_SetItemString(result, "mbmaxlen", PyInt_FromLong(cs.mbmaxlen));
    return result;
    }
    #endif
    1. when PyArg_ParseTuple() succeeds

      taking False path

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

      taking False path

    3. when PyDict_New() succeeds

      taking False path

    4. when treating unknown const char * from _mysql.c:1717 as non-NULL

      taking True path

    5. when PyUnicodeUCS4_FromString() succeeds

      when PyDict_SetItemString() succeeds

    6. when treating unknown const char * from _mysql.c:1719 as non-NULL

      taking True path

    7. when PyUnicodeUCS4_FromString() succeeds

      when PyDict_SetItemString() succeeds

    8. when treating unknown const char * from _mysql.c:1721 as non-NULL

      taking True path

    9. when PyUnicodeUCS4_FromString() fails

      found 2 similar trace(s) to this

  7. calling PyDict_SetItemString with NULL as argument 3 (D.15311) at _mysql.c:1720

    Report

    7
    static PyObject *
    _mysql_ConnectionObject_get_character_set_info(
    _mysql_ConnectionObject *self,
    PyObject *args)
    {
    PyObject *result;
    MY_CHARSET_INFO cs;
    if (!PyArg_ParseTuple(args, "")) return NULL;
    check_connection(self);
    mysql_get_character_set_info(&(self->connection), &cs);
    if (!(result = PyDict_New())) return NULL;
    if (cs.csname)
    PyDict_SetItemString(result, "name", PyUnicode_FromString(cs.csname));
    if (cs.name)
    PyDict_SetItemString(result, "collation", PyUnicode_FromString(cs.name));
    if (cs.comment)
    PyDict_SetItemString(result, "comment", PyUnicode_FromString(cs.comment));
    if (cs.dir)
    PyDict_SetItemString(result, "dir", PyUnicode_FromString(cs.dir));
    PyDict_SetItemString(result, "mbminlen", PyInt_FromLong(cs.mbminlen));
    PyDict_SetItemString(result, "mbmaxlen", PyInt_FromLong(cs.mbmaxlen));
    return result;
    }
    #endif
    1. when PyArg_ParseTuple() succeeds

      taking False path

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

      taking False path

    3. when PyDict_New() succeeds

      taking False path

    4. when treating unknown const char * from _mysql.c:1717 as non-NULL

      taking True path

    5. when PyUnicodeUCS4_FromString() succeeds

      when PyDict_SetItemString() succeeds

    6. when treating unknown const char * from _mysql.c:1719 as non-NULL

      taking True path

    7. when PyUnicodeUCS4_FromString() fails