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