Skip to content

Commit c3a4d96

Browse files
committed
pytrap: BUGFIX - increment refcount before returning field type
1 parent 0078d9f commit c3a4d96

File tree

1 file changed

+16
-12
lines changed

1 file changed

+16
-12
lines changed

pytrap/src/unirecmodule.c

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1787,27 +1787,26 @@ UnirecTemplate_getFieldType(pytrap_unirectemplate *self, PyObject *args)
17871787
case UR_TYPE_INT32:
17881788
case UR_TYPE_INT64:
17891789
case UR_TYPE_CHAR:
1790-
return (PyObject *) &PyLong_Type;
1790+
result = (PyObject *) &PyLong_Type;
17911791
break;
17921792
case UR_TYPE_FLOAT:
17931793
case UR_TYPE_DOUBLE:
1794-
return (PyObject *) &PyFloat_Type;
1794+
result = (PyObject *) &PyFloat_Type;
17951795
break;
17961796
case UR_TYPE_IP:
1797-
return (PyObject *) &pytrap_UnirecIPAddr;
1797+
result = (PyObject *) &pytrap_UnirecIPAddr;
1798+
break;
17981799
case UR_TYPE_MAC:
1799-
return (PyObject *) &pytrap_UnirecMACAddr;
1800+
result = (PyObject *) &pytrap_UnirecMACAddr;
1801+
break;
18001802
case UR_TYPE_TIME:
1801-
return (PyObject *) &pytrap_UnirecTime;
1803+
result = (PyObject *) &pytrap_UnirecTime;
1804+
break;
18021805
case UR_TYPE_STRING:
1803-
#if PY_MAJOR_VERSION >= 3
1804-
return (PyObject *) &PyUnicode_Type;
1805-
#else
1806-
return (PyObject *) &PyString_Type;
1807-
#endif
1806+
result = (PyObject *) &PyUnicode_Type;
18081807
break;
18091808
case UR_TYPE_BYTES:
1810-
return (PyObject *) &PyByteArray_Type;
1809+
result = (PyObject *) &PyByteArray_Type;
18111810
break;
18121811
case UR_TYPE_A_UINT8:
18131812
case UR_TYPE_A_INT8:
@@ -1822,12 +1821,17 @@ UnirecTemplate_getFieldType(pytrap_unirectemplate *self, PyObject *args)
18221821
case UR_TYPE_A_IP:
18231822
case UR_TYPE_A_MAC:
18241823
case UR_TYPE_A_TIME:
1825-
return (PyObject *) &PyList_Type;
1824+
result = (PyObject *) &PyList_Type;
18261825
break;
18271826
default:
18281827
PyErr_SetString(PyExc_NotImplementedError, "Unknown UniRec field type.");
18291828
return NULL;
18301829
} // case (field type)
1830+
1831+
if (result != NULL) {
1832+
Py_INCREF(result);
1833+
return result;
1834+
}
18311835
Py_RETURN_NONE;
18321836
}
18331837

0 commit comments

Comments
 (0)