summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCedric Bail <cedric.bail@samsung.com>2013-10-16 18:14:33 +0900
committerCedric Bail <cedric.bail@samsung.com>2013-10-16 18:56:32 +0900
commit6be9cc74dea4b9f377ce070128becfe6f30e04ce (patch)
tree1eaba49f185cbabda7935f8657edf75b1c9d346a
parent91e76f791d0e0ed2bf227a030b351ea2dd5a9fac (diff)
downloadefl-6be9cc74dea4b9f377ce070128becfe6f30e04ce.tar.gz
evas: simplify logic for textblock style parameter parsing.
-rw-r--r--src/lib/evas/canvas/evas_object_textblock.c40
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;
}
/**