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 }