diff options
author | Cedric Bail <cedric.bail@samsung.com> | 2013-10-16 18:14:33 +0900 |
---|---|---|
committer | Cedric Bail <cedric.bail@samsung.com> | 2013-10-16 18:56:32 +0900 |
commit | 6be9cc74dea4b9f377ce070128becfe6f30e04ce (patch) | |
tree | 1eaba49f185cbabda7935f8657edf75b1c9d346a | |
parent | 91e76f791d0e0ed2bf227a030b351ea2dd5a9fac (diff) | |
download | efl-6be9cc74dea4b9f377ce070128becfe6f30e04ce.tar.gz |
evas: simplify logic for textblock style parameter parsing.
-rw-r--r-- | src/lib/evas/canvas/evas_object_textblock.c | 40 |
1 files changed, 13 insertions, 27 deletions
diff --git a/src/lib/evas/canvas/evas_object_textblock.c b/src/lib/evas/canvas/evas_object_textblock.c index ed2f8794e8..acddf83121 100644 --- a/src/lib/evas/canvas/evas_object_textblock.c +++ b/src/lib/evas/canvas/evas_object_textblock.c @@ -2332,6 +2332,8 @@ static void _format_param_parse(const char *item, const char **key, Eina_Tmpstr **val) { const char *start, *end; + char *tmp, *s, *d; + size_t len; start = strchr(item, '='); *key = eina_stringshare_add_length(item, start - item); @@ -2356,38 +2358,22 @@ _format_param_parse(const char *item, const char **key, Eina_Tmpstr **val) } /* Null terminate before the spaces */ - if (end) - { - char *tmp = alloca(end - start + 1); - char *s, *d; + if (end) len = end - start; + else len = strlen(start); - for (d = tmp, s = (char *)start; s < end; s++) - { - if (*s != '\\') - { - *d = *s; - d++; - } - } - *d = 0; - *val = eina_tmpstr_add(tmp); - } - else - { - char *tmp = alloca(strlen(start) + 1); - char *s, *d; + tmp = (char*) eina_tmpstr_add_length(start, len); - for (d = tmp, s = (char *)start; *s; s++) + for (d = tmp, s = tmp; *s; s++) + { + if (*s != '\\') { - if (*s != '\\') - { - *d = *s; - d++; - } + *d = *s; + d++; } - *d = 0; - *val = eina_tmpstr_add(tmp); } + *d = '\0'; + + *val = tmp; } /** |