Kaydet (Commit) b1de7935 authored tarafından Stephan Bergmann's avatar Stephan Bergmann

coverity#983054, reorder code to avoid memory leak

Change-Id: If14160802f77673e3ebe69850e00d0506125969c
üst 0b20f01a
...@@ -741,36 +741,31 @@ PyObject* PyUNO_new_UNCHECKED ( ...@@ -741,36 +741,31 @@ PyObject* PyUNO_new_UNCHECKED (
const Any &targetInterface, const Any &targetInterface,
const Reference<XSingleServiceFactory> &ssf ) const Reference<XSingleServiceFactory> &ssf )
{ {
PyUNO* self;
Sequence<Any> arguments (1);
Reference<XInterface> tmp_interface; Reference<XInterface> tmp_interface;
Reference<XInvocation2> tmp_invocation;
self = PyObject_New (PyUNO, &PyUNOType);
if (self == NULL)
return NULL; // == error
self->members = new PyUNOInternals();
arguments[0] <<= targetInterface;
{ {
PyThreadDetach antiguard; PyThreadDetach antiguard;
tmp_interface = ssf->createInstanceWithArguments (arguments); Sequence<Any> arguments(1);
arguments[0] <<= targetInterface;
if (!tmp_interface.is ()) tmp_interface = ssf->createInstanceWithArguments(arguments);
{ tmp_invocation.set(tmp_interface, UNO_QUERY);
Py_INCREF( Py_None ); if (!tmp_invocation.is() && tmp_interface.is()) {
return Py_None; throw RuntimeException(
} "XInvocation2 not implemented, cannot interact with object",
Reference<XInterface>());
Reference<XInvocation2> tmp_invocation (tmp_interface, UNO_QUERY);
if (!tmp_invocation.is()) {
throw RuntimeException (OUString::createFromAscii (
"XInvocation2 not implemented, cannot interact with object"),
Reference< XInterface > ());
} }
self->members->xInvocation = tmp_invocation;
self->members->wrappedObject = targetInterface;
} }
if (!tmp_interface.is())
{
Py_INCREF( Py_None );
return Py_None;
}
PyUNO* self = PyObject_New (PyUNO, &PyUNOType);
if (self == NULL)
return NULL; // == error
self->members = new PyUNOInternals();
self->members->xInvocation = tmp_invocation;
self->members->wrappedObject = targetInterface;
return (PyObject*) self; return (PyObject*) self;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment