int32_t cursor, int32_t anchor)
{
fprintf(stderr, "text_entry_insert_at_cursor()\n");
- char *new_text = malloc(strlen(entry->text) + strlen(text) + 1);
+ char *new_text;
+ int len_entry_text, len_text;
+
+ len_entry_text = strlen(entry->text);
+ len_text = strlen(text);
+ new_text = malloc(len_entry_text + len_text + 1);
if (new_text == NULL) {
fprintf(stderr, "alloc fail");
return;
}
- strncpy(new_text, entry->text, entry->cursor);
- strcpy(new_text + entry->cursor, text);
- strcpy(new_text + entry->cursor + strlen(text),
- entry->text + entry->cursor);
+ memcpy(new_text, entry->text, entry->cursor);
+ memcpy(new_text + entry->cursor, text, len_text);
+ memcpy(new_text + entry->cursor + len_text,
+ entry->text + entry->cursor, len_entry_text - entry->cursor);
+ new_text[len_entry_text + len_text] = '\0';
free(entry->text);
entry->text = new_text;