diff options
author | Ryan Dwyer <ryandwyer1@gmail.com> | 2018-09-21 21:27:36 +1000 |
---|---|---|
committer | Ryan Dwyer <ryandwyer1@gmail.com> | 2018-09-22 18:33:28 +1000 |
commit | 10ef118e09435a6fa7815a40829126490d9a7d67 (patch) | |
tree | 91a73019ddb8482d90cf79e3f5cdf2c1f1a8c789 /sway/tree/view.c | |
parent | Merge pull request #2678 from RyanDwyer/reconfigure-on-reposition (diff) | |
download | sway-10ef118e09435a6fa7815a40829126490d9a7d67.tar.gz sway-10ef118e09435a6fa7815a40829126490d9a7d67.tar.zst sway-10ef118e09435a6fa7815a40829126490d9a7d67.zip |
Fix pango escaping and refactor escape_markup_text
Fixes #2674.
The cause of the issue was in get_pango_layout. When we call
pango_parse_markup, `text` is the escaped string, and the unescaped
string is then computed and written to `buf`. We were then passing the
unescaped string to pango_layout_set_markup, but this function needs the
escaped string. `buf` is not needed and has been removed.
The other part of this PR refactors escape_markup_text to remove the
dest_length argument and removes the -1 return value on error. It now
assumes that you've allocated dest to the correct length.
Diffstat (limited to 'sway/tree/view.c')
-rw-r--r-- | sway/tree/view.c | 9 |
1 files changed, 2 insertions, 7 deletions
diff --git a/sway/tree/view.c b/sway/tree/view.c index 4398f518..f61f5c84 100644 --- a/sway/tree/view.c +++ b/sway/tree/view.c | |||
@@ -785,14 +785,9 @@ static size_t parse_title_format(struct sway_view *view, char *buffer) { | |||
785 | } | 785 | } |
786 | 786 | ||
787 | static char *escape_title(char *buffer) { | 787 | static char *escape_title(char *buffer) { |
788 | int length = escape_markup_text(buffer, NULL, 0); | 788 | size_t length = escape_markup_text(buffer, NULL); |
789 | char *escaped_title = calloc(length + 1, sizeof(char)); | 789 | char *escaped_title = calloc(length + 1, sizeof(char)); |
790 | int result = escape_markup_text(buffer, escaped_title, length); | 790 | escape_markup_text(buffer, escaped_title); |
791 | if (result != length) { | ||
792 | wlr_log(WLR_ERROR, "Could not escape title: %s", buffer); | ||
793 | free(escaped_title); | ||
794 | return buffer; | ||
795 | } | ||
796 | free(buffer); | 791 | free(buffer); |
797 | return escaped_title; | 792 | return escaped_title; |
798 | } | 793 | } |