File: _mysql.c
Function: _mysql_escape_string
Error: memory leak: ob_refcnt of '*str.44' is 1 too high
1072 static PyObject *
1073 _mysql_escape_string(
1074 	_mysql_ConnectionObject *self,
1075 	PyObject *args)
1076 {
1077 	PyObject *str;
1078 	char *in, *out;
1079 	int len, size;
1080 	if (!PyArg_ParseTuple(args, "s#:escape_string", &in, &size)) return NULL;
when PyArg_ParseTuple() succeeds
taking False path
1081 	str = PyUnicode_FromStringAndSize((char *) NULL, size*2+1);
when PyUnicodeUCS4_FromStringAndSize() succeeds
'*str.44' was allocated at: 	str = PyUnicode_FromStringAndSize((char *) NULL, size*2+1);
ob_refcnt is now refs: 1 owned
1082 	if (!str) return PyErr_NoMemory();
taking False path
1083 	out = get_string(str);
1084 	if (!out) return NULL;
when treating unknown char * from _mysql.c:1083 as non-NULL
taking False path
1085 #if MYSQL_VERSION_ID < 32321
1086 	// TODO: we don't support mysql 3.1...
1087 	len = mysql_escape_string(out, in, size);
1088 #else
1089 	len = mysql_real_escape_string(utf8conn, out, in, size);
1090 #endif
1091 	if (PyUnicode_Resize(&str, len) < 0) return NULL;
when considering range: -0x80000000 <= value <= -1
taking True path
1092 	return (str);
1093 }

File: _mysql.c
Function: _mysql_escape_string
Error: returning (PyObject*)NULL without setting an exception
1072 static PyObject *
1073 _mysql_escape_string(
1074 	_mysql_ConnectionObject *self,
1075 	PyObject *args)
1076 {
1077 	PyObject *str;
1078 	char *in, *out;
1079 	int len, size;
1080 	if (!PyArg_ParseTuple(args, "s#:escape_string", &in, &size)) return NULL;
when PyArg_ParseTuple() succeeds
taking False path
1081 	str = PyUnicode_FromStringAndSize((char *) NULL, size*2+1);
when PyUnicodeUCS4_FromStringAndSize() succeeds
1082 	if (!str) return PyErr_NoMemory();
taking False path
1083 	out = get_string(str);
1084 	if (!out) return NULL;
when treating unknown char * from _mysql.c:1083 as non-NULL
taking False path
1085 #if MYSQL_VERSION_ID < 32321
1086 	// TODO: we don't support mysql 3.1...
1087 	len = mysql_escape_string(out, in, size);
1088 #else
1089 	len = mysql_real_escape_string(utf8conn, out, in, size);
1090 #endif
1091 	if (PyUnicode_Resize(&str, len) < 0) return NULL;
when considering range: -0x80000000 <= value <= -1
taking True path
1092 	return (str);
1093 }