Repository: incubator-guacamole-server
Updated Branches:
  refs/heads/master 09c493b39 -> 4da4ce727


GUACAMOLE-149: Ignore zero-width characters.


Project: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-server/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-guacamole-server/commit/a6e3f19b
Tree: 
http://git-wip-us.apache.org/repos/asf/incubator-guacamole-server/tree/a6e3f19b
Diff: 
http://git-wip-us.apache.org/repos/asf/incubator-guacamole-server/diff/a6e3f19b

Branch: refs/heads/master
Commit: a6e3f19bf797a4f39d500ab785b68a0aeae692ee
Parents: 09c493b
Author: Michael Jumper <[email protected]>
Authored: Tue Jan 31 23:54:40 2017 -0800
Committer: Michael Jumper <[email protected]>
Committed: Tue Jan 31 23:57:02 2017 -0800

----------------------------------------------------------------------
 src/terminal/buffer.c   |  4 ++++
 src/terminal/display.c  |  4 ++++
 src/terminal/terminal.c | 21 ++++++++++++---------
 3 files changed, 20 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-guacamole-server/blob/a6e3f19b/src/terminal/buffer.c
----------------------------------------------------------------------
diff --git a/src/terminal/buffer.c b/src/terminal/buffer.c
index 9532452..e536d92 100644
--- a/src/terminal/buffer.c
+++ b/src/terminal/buffer.c
@@ -182,6 +182,10 @@ void 
guac_terminal_buffer_set_columns(guac_terminal_buffer* buffer, int row,
     int i, j;
     guac_terminal_char* current;
 
+    /* Do nothing if glyph is empty */
+    if (character->width == 0)
+        return;
+
     /* Build continuation char (for multicolumn characters) */
     guac_terminal_char continuation_char;
     continuation_char.value = GUAC_CHAR_CONTINUATION;

http://git-wip-us.apache.org/repos/asf/incubator-guacamole-server/blob/a6e3f19b/src/terminal/display.c
----------------------------------------------------------------------
diff --git a/src/terminal/display.c b/src/terminal/display.c
index 295bdb5..e671c60 100644
--- a/src/terminal/display.c
+++ b/src/terminal/display.c
@@ -438,6 +438,10 @@ void 
guac_terminal_display_set_columns(guac_terminal_display* display, int row,
     int i;
     guac_terminal_operation* current;
 
+    /* Do nothing if glyph is empty */
+    if (character->width == 0)
+        return;
+
     /* Ignore operations outside display bounds */
     if (row < 0 || row >= display->height)
         return;

http://git-wip-us.apache.org/repos/asf/incubator-guacamole-server/blob/a6e3f19b/src/terminal/terminal.c
----------------------------------------------------------------------
diff --git a/src/terminal/terminal.c b/src/terminal/terminal.c
index 849b7ed..5c32774 100644
--- a/src/terminal/terminal.c
+++ b/src/terminal/terminal.c
@@ -657,18 +657,21 @@ char* guac_terminal_prompt(guac_terminal* terminal, const 
char* title,
 
 int guac_terminal_set(guac_terminal* term, int row, int col, int codepoint) {
 
-    int width;
-
-    /* Build character with current attributes */
-    guac_terminal_char guac_char;
-    guac_char.value = codepoint;
-    guac_char.attributes = term->current_attributes;
-
-    width = wcwidth(codepoint);
+    /* Calculate width in columns */
+    int width = wcwidth(codepoint);
     if (width < 0)
         width = 1;
 
-    guac_char.width = width;
+    /* Do nothing if glyph is empty */
+    else if (width == 0)
+        return 0;
+
+    /* Build character with current attributes */
+    guac_terminal_char guac_char = {
+        .value      = codepoint,
+        .attributes = term->current_attributes,
+        .width      = width
+    };
 
     guac_terminal_set_columns(term, row, col, col + width - 1, &guac_char);
 

Reply via email to