edje entry - be clearer and more efficient on string appending

using strncpy with strlen of the string you append is pointless.
again... strcpy will do - but use memcpy to be exact and pre-compute
sizing etc. only once. fixes warnings.
This commit is contained in:
Carsten Haitzler 2018-11-08 16:34:16 +00:00
parent db3fe9b03f
commit 5641910ed2
1 changed files with 17 additions and 13 deletions

View File

@ -361,6 +361,7 @@ _text_filter_format_prepend(Edje *ed, Entry *en, Evas_Textblock_Cursor *c, const
if (text2)
{
char *s, *markup_text;
size_t size;
s = text2;
if (*s == '+')
@ -373,13 +374,14 @@ _text_filter_format_prepend(Edje *ed, Entry *en, Evas_Textblock_Cursor *c, const
free(text2);
return;
}
markup_text = (char *)malloc(strlen(s) + 3);
size = strlen(s);
markup_text = (char *)malloc(size + 3);
if (markup_text)
{
*(markup_text) = '<';
strncpy((markup_text + 1), s, strlen(s));
*(markup_text + strlen(s) + 1) = '>';
*(markup_text + strlen(s) + 2) = '\0';
memcpy((markup_text + 1), s, size);
*(markup_text + size + 1) = '>';
*(markup_text + size + 2) = '\0';
}
}
else if (s[0] == '-')
@ -392,26 +394,28 @@ _text_filter_format_prepend(Edje *ed, Entry *en, Evas_Textblock_Cursor *c, const
free(text2);
return;
}
markup_text = (char *)malloc(strlen(s) + 4);
size = strlen(s);
markup_text = (char *)malloc(size + 4);
if (markup_text)
{
*(markup_text) = '<';
*(markup_text + 1) = '/';
strncpy((markup_text + 2), s, strlen(s));
*(markup_text + strlen(s) + 2) = '>';
*(markup_text + strlen(s) + 3) = '\0';
memcpy((markup_text + 2), s, size);
*(markup_text + size + 2) = '>';
*(markup_text + size + 3) = '\0';
}
}
else
{
markup_text = (char *)malloc(strlen(s) + 4);
size = strlen(s);
markup_text = (char *)malloc(size + 4);
if (markup_text)
{
*(markup_text) = '<';
strncpy((markup_text + 1), s, strlen(s));
*(markup_text + strlen(s) + 1) = '/';
*(markup_text + strlen(s) + 2) = '>';
*(markup_text + strlen(s) + 3) = '\0';
memcpy((markup_text + 1), s, size);
*(markup_text + size + 1) = '/';
*(markup_text + size + 2) = '>';
*(markup_text + size + 3) = '\0';
}
}
free(text2);