ipc-server: Acquire ownership of referenced json_object properly

When adding a referenced json_object with an unknown lifetime to
another json_object, it must be done with a wrapped call to
json_object_get() to acquire the ownership of that json_object.
This commit is contained in:
Björn Esser 2017-12-14 16:44:18 +01:00
parent c6e12368a5
commit 8272a9bae0
No known key found for this signature in database
GPG key ID: F52E98007594C21D

View file

@ -1126,7 +1126,8 @@ static void ipc_event_binding(json_object *sb_obj) {
sway_log(L_DEBUG, "Sending binding::run event"); sway_log(L_DEBUG, "Sending binding::run event");
json_object *obj = json_object_new_object(); json_object *obj = json_object_new_object();
json_object_object_add(obj, "change", json_object_new_string("run")); json_object_object_add(obj, "change", json_object_new_string("run"));
json_object_object_add(obj, "binding", sb_obj); // sb_obj gets owned by the temporary json_object, too.
json_object_object_add(obj, "binding", json_object_get(sb_obj));
const char *json_string = json_object_to_json_string(obj); const char *json_string = json_object_to_json_string(obj);
ipc_send_event(json_string, IPC_EVENT_BINDING); ipc_send_event(json_string, IPC_EVENT_BINDING);