PyEval_CallObject( pFunc, p_args );
PyObject *result = PyEval_CallObject( pFunc, p_args ); Py_XDECREF(result);  Py_DECREF(p_args);
	void handleResponse( cUOSocket* socket, const gumpChoice_st& choice )	{		// Call the response function (and pass it a response-object)		// Try to call the python function		// Get everything before the last dot		if ( !callback.isNull() && !callback.isEmpty() && callback.contains( "." ) )		{			// Find the last dot			int position = callback.findRev( "." );			QString sModule = callback.left( position );			QString sFunction = callback.right( callback.length() - ( position + 1 ) );			PyObject* pModule = PyImport_ImportModule( const_cast<char*>( sModule.latin1() ) );			if ( pModule )			{				PyObject* pFunc = PyObject_GetAttrString( pModule, const_cast<char*>( sFunction.latin1() ) );				if ( pFunc && PyCallable_Check( pFunc ) )				{					// Create our Argument list					PyObject* p_args = PyTuple_New( 3 );					PyTuple_SetItem( p_args, 0, PyGetCharObject( socket->player() ) );					Py_INCREF(args);					PyTuple_SetItem( p_args, 1, args );					PyTuple_SetItem( p_args, 2, PyGetGumpResponse( choice ) );					PyEval_CallObject( pFunc, p_args );					reportPythonError( sModule );				}			}			else			{				Console::instance()->log( LOG_ERROR, QString( "Couldn't find code module %1 for a gump callback." ).arg( sModule ) );			}		}		Py_DECREF( args );	}