Fix memory leaks in sendWithReplyAsync

Signed-off-by: Slávek Banko <slavek.banko@axis.cz>
(cherry picked from commit 9d505d2683)
r14.0.x
Slávek Banko 7 years ago
parent add9efb871
commit bb5a36fe58

@ -291,6 +291,16 @@ TQT_DBusConnectionPrivate::TQT_DBusConnectionPrivate(TQObject *parent)
TQT_DBusConnectionPrivate::~TQT_DBusConnectionPrivate()
{
for (PendingCallMap::iterator it = pendingCalls.begin(); it != pendingCalls.end();)
{
PendingCallMap::iterator copyIt = it;
++it;
dbus_pending_call_cancel(copyIt.key());
dbus_pending_call_unref(copyIt.key());
delete copyIt.data();
pendingCalls.erase(copyIt);
}
if (dbus_error_is_set(&error))
dbus_error_free(&error);
@ -629,20 +639,22 @@ int TQT_DBusConnectionPrivate::sendWithReplyAsync(const TQT_DBusMessage &message
if (!msg)
return 0;
int msg_serial = 0;
DBusPendingCall *pending = 0;
if (dbus_connection_send_with_reply(connection, msg, &pending, message.timeout())) {
TQT_DBusPendingCall *pcall = new TQT_DBusPendingCall;
pcall->receiver = receiver;
pcall->method = method;
pcall->pending = dbus_pending_call_ref(pending);
pcall->pending = pending;
pendingCalls.insert(pcall->pending, pcall);
dbus_pending_call_set_notify(pending, qDBusResultReceived, this, 0);
return dbus_message_get_serial(msg);
msg_serial = dbus_message_get_serial(msg);
}
return 0;
dbus_message_unref(msg);
return msg_serial;
}
void TQT_DBusConnectionPrivate::flush()

Loading…
Cancel
Save