text-input/input-method: handle strdup() failure

master
Isaac Freund 3 years ago
parent eb5f23d6d0
commit e326b76959
No known key found for this signature in database
GPG Key ID: 86DED400DDFD7A11

@ -88,6 +88,10 @@ static void im_commit_string(struct wl_client *client,
} }
free(input_method->pending.commit_text); free(input_method->pending.commit_text);
input_method->pending.commit_text = strdup(text); input_method->pending.commit_text = strdup(text);
if (input_method->pending.commit_text == NULL) {
wl_client_post_no_memory(client);
return;
}
} }
static void im_set_preedit_string(struct wl_client *client, static void im_set_preedit_string(struct wl_client *client,
@ -102,6 +106,10 @@ static void im_set_preedit_string(struct wl_client *client,
input_method->pending.preedit.cursor_end = cursor_end; input_method->pending.preedit.cursor_end = cursor_end;
free(input_method->pending.preedit.text); free(input_method->pending.preedit.text);
input_method->pending.preedit.text = strdup(text); input_method->pending.preedit.text = strdup(text);
if (input_method->pending.preedit.text == NULL) {
wl_client_post_no_memory(client);
return;
}
} }
static void im_delete_surrounding_text(struct wl_client *client, static void im_delete_surrounding_text(struct wl_client *client,

@ -171,6 +171,10 @@ static void text_input_commit(struct wl_client *client,
if (text_input->pending.surrounding.text) { if (text_input->pending.surrounding.text) {
text_input->current.surrounding.text = text_input->current.surrounding.text =
strdup(text_input->pending.surrounding.text); strdup(text_input->pending.surrounding.text);
if (text_input->current.surrounding.text == NULL) {
wl_client_post_no_memory(client);
return;
}
} }
bool old_enabled = text_input->current_enabled; bool old_enabled = text_input->current_enabled;

Loading…
Cancel
Save