Update of /cvsroot/pywin32/pywin32/com/win32com/src/extensions
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11637/win32com/src/extensions
Modified Files:
PyIServiceProvider.cpp
Log Message:
s/PyCom_HandlePythonFailureToCOM/MAKE_PYCOM_GATEWAY_FAILURE_CODE/ and fix
error handling in QueryService if either param fails
Index: PyIServiceProvider.cpp
===================================================================
RCS file: /cvsroot/pywin32/pywin32/com/win32com/src/extensions/PyIServiceProvider.cpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** PyIServiceProvider.cpp 11 Dec 2004 19:49:56 -0000 1.4
--- PyIServiceProvider.cpp 18 Aug 2008 12:59:55 -0000 1.5
***************
*** 66,82 ****
STDMETHODIMP PyGServiceProvider::QueryService(REFGUID guidService, REFIID riid, void **ppv)
{
if (ppv==NULL) return E_POINTER;
*ppv = NULL;
PY_GATEWAY_METHOD;
PyObject *obGUID = PyWinObject_FromIID(guidService);
! if (obGUID==NULL) PyCom_HandlePythonFailureToCOM();
PyObject *obIID = PyWinObject_FromIID(riid);
if (obIID==NULL) {
Py_DECREF(obGUID);
! PyCom_HandlePythonFailureToCOM();
}
PyObject *result;
! HRESULT hr = InvokeViaPolicy("QueryService", &result, "OO", obGUID, obIID);
Py_DECREF(obIID);
Py_DECREF(obGUID);
--- 66,83 ----
STDMETHODIMP PyGServiceProvider::QueryService(REFGUID guidService, REFIID riid, void **ppv)
{
+ static const char *method_name = "QueryService";
if (ppv==NULL) return E_POINTER;
*ppv = NULL;
PY_GATEWAY_METHOD;
PyObject *obGUID = PyWinObject_FromIID(guidService);
! if (obGUID==NULL) return MAKE_PYCOM_GATEWAY_FAILURE_CODE(method_name);
PyObject *obIID = PyWinObject_FromIID(riid);
if (obIID==NULL) {
Py_DECREF(obGUID);
! return MAKE_PYCOM_GATEWAY_FAILURE_CODE(method_name);
}
PyObject *result;
! HRESULT hr = InvokeViaPolicy(method_name, &result, "OO", obGUID, obIID);
Py_DECREF(obIID);
Py_DECREF(obGUID);
***************
*** 85,89 ****
PyCom_InterfaceFromPyInstanceOrObject(result, riid, ppv, TRUE);
Py_XDECREF(result);
! return PyCom_HandlePythonFailureToCOM();
}
--- 86,90 ----
PyCom_InterfaceFromPyInstanceOrObject(result, riid, ppv, TRUE);
Py_XDECREF(result);
! return MAKE_PYCOM_GATEWAY_FAILURE_CODE(method_name);
}
|