forked from enlightenment/enlightenment
weekbd - fix text insert to not leak and have no warnings
This commit is contained in:
parent
135c5679fb
commit
91066bd06f
|
@ -38,36 +38,26 @@ struct weekeyboard
|
||||||
static char *
|
static char *
|
||||||
_wkb_insert_text(const char *text, uint32_t offset, const char *insert)
|
_wkb_insert_text(const char *text, uint32_t offset, const char *insert)
|
||||||
{
|
{
|
||||||
char *new_text = malloc(strlen(text) + strlen(insert) + 1);
|
size_t insert_len, text_len;
|
||||||
uint32_t text_len = 0;
|
char *new_text;
|
||||||
|
|
||||||
if (!new_text)
|
if ((!text) || (!insert)) return NULL;
|
||||||
{
|
|
||||||
ERR("out of memory");
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((!text) || (!insert))
|
|
||||||
{
|
|
||||||
free(new_text);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
text_len = strlen(text);
|
text_len = strlen(text);
|
||||||
if (offset > text_len)
|
insert_len = strlen(insert);
|
||||||
offset = text_len;
|
new_text = malloc(text_len +insert_len + 1);
|
||||||
|
|
||||||
new_text = malloc(text_len + strlen(insert) + 1);
|
|
||||||
if (!new_text)
|
if (!new_text)
|
||||||
{
|
{
|
||||||
ERR("out of memory");
|
ERR("out of memory");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
strncpy(new_text, text, offset);
|
if (offset > text_len) offset = text_len;
|
||||||
|
|
||||||
|
memcpy(new_text, text, offset);
|
||||||
new_text[offset] = '\0';
|
new_text[offset] = '\0';
|
||||||
strcat(new_text, insert);
|
memcpy(new_text, insert, insert_len);
|
||||||
strcat(new_text, text + offset);
|
strcpy(new_text + insert_len, text + offset);
|
||||||
|
|
||||||
return new_text;
|
return new_text;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue