diff options
Diffstat (limited to 'swaygrab/json.c')
-rw-r--r-- | swaygrab/json.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/swaygrab/json.c b/swaygrab/json.c index 80dae299..32b68612 100644 --- a/swaygrab/json.c +++ b/swaygrab/json.c | |||
@@ -4,6 +4,7 @@ | |||
4 | #include <stdbool.h> | 4 | #include <stdbool.h> |
5 | #include <stdlib.h> | 5 | #include <stdlib.h> |
6 | #include <unistd.h> | 6 | #include <unistd.h> |
7 | #include "log.h" | ||
7 | #include "ipc-client.h" | 8 | #include "ipc-client.h" |
8 | #include "swaygrab/json.h" | 9 | #include "swaygrab/json.h" |
9 | 10 | ||
@@ -12,7 +13,15 @@ static json_object *tree; | |||
12 | void init_json_tree(int socketfd) { | 13 | void init_json_tree(int socketfd) { |
13 | uint32_t len = 0; | 14 | uint32_t len = 0; |
14 | char *res = ipc_single_command(socketfd, IPC_GET_TREE, NULL, &len); | 15 | char *res = ipc_single_command(socketfd, IPC_GET_TREE, NULL, &len); |
15 | tree = json_tokener_parse(res); | 16 | struct json_tokener *tok = json_tokener_new_ex(256); |
17 | if (!tok) { | ||
18 | sway_abort("Unable to get json tokener."); | ||
19 | } | ||
20 | tree = json_tokener_parse_ex(tok, res, len); | ||
21 | if (!tree || tok->err != json_tokener_success) { | ||
22 | sway_abort("Unable to parse IPC response as JSON: %s", json_tokener_error_desc(tok->err)); | ||
23 | } | ||
24 | json_tokener_free(tok); | ||
16 | } | 25 | } |
17 | 26 | ||
18 | void free_json_tree() { | 27 | void free_json_tree() { |