You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by dn...@apache.org on 2015/03/16 16:58:42 UTC

qpid-proton git commit: PROTON-834: further UTF-8 encoder fixes

Repository: qpid-proton
Updated Branches:
  refs/heads/master e31df015a -> 7b9b516d4


PROTON-834: further UTF-8 encoder fixes

After commit c65e897 it turned out there were still some issues with
strings containing a codepoint >0xDBFF which was being incorrectly
treated as a surrogate pair in the calculateUTF8Length method.

Fixed this up and added some more test coverage.

Closes #13


Project: http://git-wip-us.apache.org/repos/asf/qpid-proton/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-proton/commit/7b9b516d
Tree: http://git-wip-us.apache.org/repos/asf/qpid-proton/tree/7b9b516d
Diff: http://git-wip-us.apache.org/repos/asf/qpid-proton/diff/7b9b516d

Branch: refs/heads/master
Commit: 7b9b516d445ab9e86a0313709c77218d901435b1
Parents: e31df01
Author: Dominic Evans <do...@uk.ibm.com>
Authored: Mon Mar 16 12:18:20 2015 +0000
Committer: Dominic Evans <do...@uk.ibm.com>
Committed: Mon Mar 16 15:58:21 2015 +0000

----------------------------------------------------------------------
 .../main/java/org/apache/qpid/proton/codec/StringType.java   | 2 +-
 .../java/org/apache/qpid/proton/codec/StringTypeTest.java    | 8 ++++++++
 2 files changed, 9 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/7b9b516d/proton-j/src/main/java/org/apache/qpid/proton/codec/StringType.java
----------------------------------------------------------------------
diff --git a/proton-j/src/main/java/org/apache/qpid/proton/codec/StringType.java b/proton-j/src/main/java/org/apache/qpid/proton/codec/StringType.java
index 092894d..a035e94 100644
--- a/proton-j/src/main/java/org/apache/qpid/proton/codec/StringType.java
+++ b/proton-j/src/main/java/org/apache/qpid/proton/codec/StringType.java
@@ -97,7 +97,7 @@ public class StringType extends AbstractPrimitiveType<String>
                 {
                     len++;
                     // surrogate pairs should always combine to create a code point with a 4 octet representation
-                    if ((c & 0xD800) == 0xD800)
+                    if ((c & 0xD800) == 0xD800 && c < 0xDC00)
                     {
                         i++;
                     }

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/7b9b516d/proton-j/src/test/java/org/apache/qpid/proton/codec/StringTypeTest.java
----------------------------------------------------------------------
diff --git a/proton-j/src/test/java/org/apache/qpid/proton/codec/StringTypeTest.java b/proton-j/src/test/java/org/apache/qpid/proton/codec/StringTypeTest.java
index 7d78f65..7a44063 100644
--- a/proton-j/src/test/java/org/apache/qpid/proton/codec/StringTypeTest.java
+++ b/proton-j/src/test/java/org/apache/qpid/proton/codec/StringTypeTest.java
@@ -140,9 +140,17 @@ public class StringTypeTest
                                                          UnicodeBlock.MUSICAL_SYMBOLS,
                                                          /*UnicodeBlock.EMOTICONS,*/
                                                          /*UnicodeBlock.PLAYING_CARDS,*/
+                                                         UnicodeBlock.BOX_DRAWING,
                                                          UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS,
                                                          UnicodeBlock.SUPPLEMENTARY_PRIVATE_USE_AREA_A,
                                                          UnicodeBlock.SUPPLEMENTARY_PRIVATE_USE_AREA_B));
+                    // some additional combinations of characters that could cause problems to the encoder
+                    String[] boxDrawing = getAllStringsFromUnicodeBlocks(UnicodeBlock.BOX_DRAWING).toArray(new String[0]);
+                    String[] halfFullWidthForms = getAllStringsFromUnicodeBlocks(UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS).toArray(new String[0]);
+                    for (int i = 0; i < halfFullWidthForms.length; i++)
+                    {
+                        add(halfFullWidthForms[i] + boxDrawing[i % boxDrawing.length]);
+                    }
                 }
             };
     }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org