diff options
author | Daniel Hirt <daniel.hirt@samsung.com> | 2015-08-27 18:20:47 +0300 |
---|---|---|
committer | Daniel Hirt <daniel.hirt@samsung.com> | 2015-08-27 22:59:19 +0300 |
commit | d6b6a733589b79d7ae021819e11f53cf2819a1a6 (patch) | |
tree | 5e90ed0311ccf8602dcfce4169a60502048239ee | |
parent | f38fffa576178d8c5c2bc4f963ebc02e6731b83a (diff) | |
download | efl-d6b6a733589b79d7ae021819e11f53cf2819a1a6.tar.gz |
Evas textblock: fix case of own_closer in style_set
Looks like it was assumed that an fnode->orig_format always ends with a
'/' character if the fnode is an own_closer.
The problem is that a paragraph separator ("ps" and "br" - the latter in
legacy newline mode) is also an own_closer, but might not have '/' at the
end, so decrementing the length is wrong.
This fixes T2654. The example markup had "br" read as "b", which led to
a mismatch with the "font_weight=Bold" tag. Coincidentally, "ps" was not
affected as there was no matching "p" in the style.
@fix
-rw-r--r-- | src/lib/evas/canvas/evas_object_textblock.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/lib/evas/canvas/evas_object_textblock.c b/src/lib/evas/canvas/evas_object_textblock.c index d992cd626b..ce419c2423 100644 --- a/src/lib/evas/canvas/evas_object_textblock.c +++ b/src/lib/evas/canvas/evas_object_textblock.c @@ -6168,8 +6168,11 @@ _textblock_style_generic_set(Evas_Object *eo_obj, Evas_Textblock_Style *ts, size_t format_len = eina_stringshare_strlen(fnode->orig_format); /* Is this safe to use alloca here? Strings might possibly get large */ - if (fnode->own_closer) - format_len--; + if (fnode->own_closer && + (format_len > 0) && (fnode->orig_format[format_len - 1] == '/')) + { + format_len--; + } match = _textblock_format_node_from_style_tag(o, fnode, fnode->orig_format, format_len); |