File: arm4module.c
Function: start_transaction
Error: ob_refcnt of '*tran_handle' is 1 too high
3807 static PyObject *
3808 start_transaction (PyObject *self, PyObject *args, PyObject *keywds)
3809 {
3810     arm_error_t status;
3811 	ArmHandle *app_handle;
3812 	ArmID *tran_id;
3813 	ArmHandle *tran_handle;
3814 	ArmCorrelator *parent = NULL;
3815 	arm_correlator_t *parent_ptr = NULL;
3816 	ArmCorrelator *correlator = NULL;
3817 	arm_correlator_t *correlator_ptr = NULL;
3818 	int flags = ARM_FLAG_NONE;
3819 	ArmBuffer *buffer = NULL;
3820 	arm_buffer4_t *buffer_ptr = NULL;
3821 
3822 	/*
3823 	 * Supported calling signatures:
3824 	 *	start_transaction (app_handle, tran_id, parent=, correlator=)
3825 	 *	start_transaction (app_handle, tran_id, parent=, correlator=, (buffers...))
3826 	 */
3827 
3828 	static char *kwlist[] = {"app_handle", "tran_id", "parent", "correlator", "flags", "buffer", NULL};
3829 
3830 	if (!PyArg_ParseTupleAndKeywords(args, keywds, "OO|OOiO:start_transaction", kwlist,
when PyArg_ParseTupleAndKeywords() succeeds
taking False path
3831 				&app_handle, &tran_id, &parent, &correlator, &flags, &buffer))
3832         return NULL;
3833 	if (!ArmHandle_Object_Check(app_handle))
when taking True path
when considering range: -0x80000000 <= value <= -1
taking False path
3834 		return NULL;
3835 	if (!ArmID_Object_Check(tran_id))
when taking True path
when considering range: -0x80000000 <= value <= -1
taking False path
3836 		return NULL;
3837 	if (buffer && ArmBuffer_Object_Check(buffer))
taking True path
when taking True path
3838 	{
3839 		prepare (buffer);
3840 		buffer_ptr = &(buffer->arm_buffer);
3841 	}
3842 
3843 	/* Set up our optional parameters */
3844 	if (parent && ArmCorrelator_Object_Check (parent))
taking True path
when taking True path
3845 		parent_ptr = &(parent->arm_correlator);
3846 	else
3847 		parent_ptr = NULL;
3848 	if (correlator && ArmCorrelator_Object_Check (correlator))
taking True path
when taking False path
when considering value == (int)0 from arm4module.c:3848
taking False path
3849 		correlator_ptr = &(correlator->arm_correlator);
3850 	else
3851 		correlator_ptr = NULL;
3852 
3853 	tran_handle = newArmHandle (0);
when newArmHandle() succeeds
new ref from (unknown) newArmHandle allocated at: 	tran_handle = newArmHandle (0);
ob_refcnt is now refs: 1 + N where N >= 0
3854 
3855 	status = arm_start_transaction(
3856 		app_handle->arm_handle,
3857 		&(tran_id->arm_id),
3858 		parent_ptr,
3859 		flags,
3860 		buffer_ptr,
3861 		&(tran_handle->arm_handle),
3862 		correlator_ptr);
3863 	if (GETSTATE0->enableExceptions && (status != ARM_SUCCESS))
when considering range: -0x80000000 <= value <= -1
when considering range: -0x80000000 <= value <= -1
taking True path
3864 	{
3865 		set_arm_error (status, "arm_start_transaction");
3866 		return NULL;
3867 	}
3868 
3869 	/* Return the transaction handle */
3870 	return (PyObject *) tran_handle;
3871 }
ob_refcnt of '*tran_handle' is 1 too high
was expecting final ob_refcnt to be N + 0 (for some unknown N)
but final ob_refcnt is N + 1
found 9 similar trace(s) to this

File: arm4module.c
Function: start_transaction
Error: returning (PyObject*)NULL without setting an exception
3807 static PyObject *
3808 start_transaction (PyObject *self, PyObject *args, PyObject *keywds)
3809 {
3810     arm_error_t status;
3811 	ArmHandle *app_handle;
3812 	ArmID *tran_id;
3813 	ArmHandle *tran_handle;
3814 	ArmCorrelator *parent = NULL;
3815 	arm_correlator_t *parent_ptr = NULL;
3816 	ArmCorrelator *correlator = NULL;
3817 	arm_correlator_t *correlator_ptr = NULL;
3818 	int flags = ARM_FLAG_NONE;
3819 	ArmBuffer *buffer = NULL;
3820 	arm_buffer4_t *buffer_ptr = NULL;
3821 
3822 	/*
3823 	 * Supported calling signatures:
3824 	 *	start_transaction (app_handle, tran_id, parent=, correlator=)
3825 	 *	start_transaction (app_handle, tran_id, parent=, correlator=, (buffers...))
3826 	 */
3827 
3828 	static char *kwlist[] = {"app_handle", "tran_id", "parent", "correlator", "flags", "buffer", NULL};
3829 
3830 	if (!PyArg_ParseTupleAndKeywords(args, keywds, "OO|OOiO:start_transaction", kwlist,
when PyArg_ParseTupleAndKeywords() succeeds
taking False path
3831 				&app_handle, &tran_id, &parent, &correlator, &flags, &buffer))
3832         return NULL;
3833 	if (!ArmHandle_Object_Check(app_handle))
when taking True path
when considering range: -0x80000000 <= value <= -1
taking False path
3834 		return NULL;
3835 	if (!ArmID_Object_Check(tran_id))
when taking True path
when considering range: -0x80000000 <= value <= -1
taking False path
3836 		return NULL;
3837 	if (buffer && ArmBuffer_Object_Check(buffer))
taking True path
when taking True path
3838 	{
3839 		prepare (buffer);
3840 		buffer_ptr = &(buffer->arm_buffer);
3841 	}
3842 
3843 	/* Set up our optional parameters */
3844 	if (parent && ArmCorrelator_Object_Check (parent))
taking True path
when taking True path
3845 		parent_ptr = &(parent->arm_correlator);
3846 	else
3847 		parent_ptr = NULL;
3848 	if (correlator && ArmCorrelator_Object_Check (correlator))
taking True path
when taking False path
when considering value == (int)0 from arm4module.c:3848
taking False path
3849 		correlator_ptr = &(correlator->arm_correlator);
3850 	else
3851 		correlator_ptr = NULL;
3852 
3853 	tran_handle = newArmHandle (0);
when newArmHandle() succeeds
3854 
3855 	status = arm_start_transaction(
3856 		app_handle->arm_handle,
3857 		&(tran_id->arm_id),
3858 		parent_ptr,
3859 		flags,
3860 		buffer_ptr,
3861 		&(tran_handle->arm_handle),
3862 		correlator_ptr);
3863 	if (GETSTATE0->enableExceptions && (status != ARM_SUCCESS))
when considering range: -0x80000000 <= value <= -1
when considering range: -0x80000000 <= value <= -1
taking True path
3864 	{
3865 		set_arm_error (status, "arm_start_transaction");
3866 		return NULL;
3867 	}
3868 
3869 	/* Return the transaction handle */
3870 	return (PyObject *) tran_handle;
3871 }
returning (PyObject*)NULL without setting an exception
found 9 similar trace(s) to this

File: arm4module.c
Function: start_transaction
Error: dereferencing NULL (tran_handle->arm_handle) at arm4module.c:3861
3807 static PyObject *
3808 start_transaction (PyObject *self, PyObject *args, PyObject *keywds)
3809 {
3810     arm_error_t status;
3811 	ArmHandle *app_handle;
3812 	ArmID *tran_id;
3813 	ArmHandle *tran_handle;
3814 	ArmCorrelator *parent = NULL;
3815 	arm_correlator_t *parent_ptr = NULL;
3816 	ArmCorrelator *correlator = NULL;
3817 	arm_correlator_t *correlator_ptr = NULL;
3818 	int flags = ARM_FLAG_NONE;
3819 	ArmBuffer *buffer = NULL;
3820 	arm_buffer4_t *buffer_ptr = NULL;
3821 
3822 	/*
3823 	 * Supported calling signatures:
3824 	 *	start_transaction (app_handle, tran_id, parent=, correlator=)
3825 	 *	start_transaction (app_handle, tran_id, parent=, correlator=, (buffers...))
3826 	 */
3827 
3828 	static char *kwlist[] = {"app_handle", "tran_id", "parent", "correlator", "flags", "buffer", NULL};
3829 
3830 	if (!PyArg_ParseTupleAndKeywords(args, keywds, "OO|OOiO:start_transaction", kwlist,
when PyArg_ParseTupleAndKeywords() succeeds
taking False path
3831 				&app_handle, &tran_id, &parent, &correlator, &flags, &buffer))
3832         return NULL;
3833 	if (!ArmHandle_Object_Check(app_handle))
when taking True path
when considering range: -0x80000000 <= value <= -1
taking False path
3834 		return NULL;
3835 	if (!ArmID_Object_Check(tran_id))
when taking True path
when considering range: -0x80000000 <= value <= -1
taking False path
3836 		return NULL;
3837 	if (buffer && ArmBuffer_Object_Check(buffer))
taking True path
when taking True path
3838 	{
3839 		prepare (buffer);
3840 		buffer_ptr = &(buffer->arm_buffer);
3841 	}
3842 
3843 	/* Set up our optional parameters */
3844 	if (parent && ArmCorrelator_Object_Check (parent))
taking True path
when taking True path
3845 		parent_ptr = &(parent->arm_correlator);
3846 	else
3847 		parent_ptr = NULL;
3848 	if (correlator && ArmCorrelator_Object_Check (correlator))
taking True path
when taking False path
when considering range: -0x80000000 <= value <= -1
taking True path
3849 		correlator_ptr = &(correlator->arm_correlator);
3850 	else
3851 		correlator_ptr = NULL;
3852 
3853 	tran_handle = newArmHandle (0);
when newArmHandle() fails
3854 
3855 	status = arm_start_transaction(
3856 		app_handle->arm_handle,
3857 		&(tran_id->arm_id),
3858 		parent_ptr,
3859 		flags,
3860 		buffer_ptr,
3861 		&(tran_handle->arm_handle),
dereferencing NULL (tran_handle->arm_handle) at arm4module.c:3861
found 1 similar trace(s) to this
3862 		correlator_ptr);
3863 	if (GETSTATE0->enableExceptions && (status != ARM_SUCCESS))
3864 	{
3865 		set_arm_error (status, "arm_start_transaction");
3866 		return NULL;
3867 	}
3868 
3869 	/* Return the transaction handle */
3870 	return (PyObject *) tran_handle;
3871 }