}
wsc_ctx->impl->imdata = calloc(1, input_panel_data_length);
- memcpy(wsc_ctx->impl->imdata, input_panel_data, input_panel_data_length);
+ if (wsc_ctx->impl->imdata)
+ memcpy(wsc_ctx->impl->imdata, input_panel_data, input_panel_data_length);
+
wsc_ctx->impl->imdata_size = input_panel_data_length;
}
memcpy (str_buffer, wsc_ctx->preedit_str, MAX_PREEDIT_BUFSIZE - 1);
str_buffer[MAX_PREEDIT_BUFSIZE - 1] = '\0';
+ char *old_preedit_str = wsc_ctx->preedit_str;
wsc_ctx->preedit_str = (char*)realloc (wsc_ctx->preedit_str, sizeof(char) * MAX_PREEDIT_BUFSIZE);
if (wsc_ctx->preedit_str) {
memcpy (wsc_ctx->preedit_str, str_buffer, strlen(str_buffer));
wsc_ctx->preedit_str[MAX_PREEDIT_BUFSIZE - 1] = '\0';
} else {
+ free (old_preedit_str);
LOGE ("realloc failed");
return;
}