Fix leak of a few bytes of memory after every update notification
Fixes #1411
This commit is contained in:
parent
2066dd0077
commit
cb8116e2af
6
glfw/linux_notify.c
vendored
6
glfw/linux_notify.c
vendored
@ -32,12 +32,14 @@ void
|
|||||||
notification_created(DBusMessage *msg, const char* errmsg, void *data) {
|
notification_created(DBusMessage *msg, const char* errmsg, void *data) {
|
||||||
if (errmsg) {
|
if (errmsg) {
|
||||||
_glfwInputError(GLFW_PLATFORM_ERROR, "Notify: Failed to create notification error: %s", errmsg);
|
_glfwInputError(GLFW_PLATFORM_ERROR, "Notify: Failed to create notification error: %s", errmsg);
|
||||||
|
if (data) free(data);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
uint32_t notification_id;
|
uint32_t notification_id;
|
||||||
if (!glfw_dbus_get_args(msg, "Failed to get Notification uid", DBUS_TYPE_UINT32, ¬ification_id, DBUS_TYPE_INVALID)) return;
|
if (!glfw_dbus_get_args(msg, "Failed to get Notification uid", DBUS_TYPE_UINT32, ¬ification_id, DBUS_TYPE_INVALID)) return;
|
||||||
NotificationCreatedData *ncd = (NotificationCreatedData*)data;
|
NotificationCreatedData *ncd = (NotificationCreatedData*)data;
|
||||||
if (ncd->callback) ncd->callback(ncd->next_id, notification_id, ncd->data);
|
if (ncd->callback) ncd->callback(ncd->next_id, notification_id, ncd->data);
|
||||||
|
if (data) free(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
static DBusHandlerResult
|
static DBusHandlerResult
|
||||||
@ -76,10 +78,10 @@ glfw_dbus_send_user_notification(const char *app_name, const char* icon, const c
|
|||||||
uint32_t replaces_id = 0;
|
uint32_t replaces_id = 0;
|
||||||
|
|
||||||
DBusMessage *msg = dbus_message_new_method_call(NOTIFICATIONS_SERVICE, NOTIFICATIONS_PATH, NOTIFICATIONS_IFACE, "Notify");
|
DBusMessage *msg = dbus_message_new_method_call(NOTIFICATIONS_SERVICE, NOTIFICATIONS_PATH, NOTIFICATIONS_IFACE, "Notify");
|
||||||
if (!msg) return 0;
|
if (!msg) { free(data); return 0; }
|
||||||
DBusMessageIter args, array;
|
DBusMessageIter args, array;
|
||||||
dbus_message_iter_init_append(msg, &args);
|
dbus_message_iter_init_append(msg, &args);
|
||||||
#define OOMMSG { dbus_message_unref(msg); _glfwInputError(GLFW_PLATFORM_ERROR, "%s", "Out of memory allocating DBUS message for notification\n"); return 0; }
|
#define OOMMSG { free(data); data = NULL; dbus_message_unref(msg); _glfwInputError(GLFW_PLATFORM_ERROR, "%s", "Out of memory allocating DBUS message for notification\n"); return 0; }
|
||||||
#define APPEND(type, val) { if (!dbus_message_iter_append_basic(&args, type, val)) OOMMSG }
|
#define APPEND(type, val) { if (!dbus_message_iter_append_basic(&args, type, val)) OOMMSG }
|
||||||
APPEND(DBUS_TYPE_STRING, &app_name)
|
APPEND(DBUS_TYPE_STRING, &app_name)
|
||||||
APPEND(DBUS_TYPE_UINT32, &replaces_id)
|
APPEND(DBUS_TYPE_UINT32, &replaces_id)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user