From 1a74a0c1146e30ca2ddecf8ef484a645289171ee Mon Sep 17 00:00:00 2001
From: Nick Burch <nick@apache.org>
Date: Wed, 4 May 2011 03:11:28 +0000
Subject: [PATCH] Fix bug #51143 - Correct NameCommentRecord to properly
 serialise strings

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1099313 13f79535-47bb-0310-9956-ffa450edef68
---
 src/documentation/content/xdocs/status.xml      |   1 +
 .../poi/hssf/record/NameCommentRecord.java      |   4 ++--
 .../org/apache/poi/hssf/usermodel/TestBugs.java |  11 +++++++++++
 test-data/spreadsheet/51143.xls                 | Bin 0 -> 17408 bytes
 4 files changed, 14 insertions(+), 2 deletions(-)
 create mode 100644 test-data/spreadsheet/51143.xls

diff --git a/src/documentation/content/xdocs/status.xml b/src/documentation/content/xdocs/status.xml
index 7b1b3bbfd4..a87636e9f7 100644
--- a/src/documentation/content/xdocs/status.xml
+++ b/src/documentation/content/xdocs/status.xml
@@ -34,6 +34,7 @@
 
     <changes>
         <release version="3.8-beta3" date="2011-??-??">
+           <action dev="poi-developers" type="fix">51143 - NameCommentRecord correction for writing non ASCII strings</action>
            <action dev="poi-developers" type="fix">51112 - Correct XWPFTable tracking of new rows</action>
            <action dev="poi-developers" type="fix">51113 - Correct XWPFParagraph tracking of inserted runs</action>
            <action dev="poi-developers" type="fix">51111 - Correct XWPFParagraph tracking of new runs</action>
diff --git a/src/java/org/apache/poi/hssf/record/NameCommentRecord.java b/src/java/org/apache/poi/hssf/record/NameCommentRecord.java
index 36d6132d0b..ed33c2d1f2 100644
--- a/src/java/org/apache/poi/hssf/record/NameCommentRecord.java
+++ b/src/java/org/apache/poi/hssf/record/NameCommentRecord.java
@@ -63,9 +63,9 @@ public final class NameCommentRecord extends StandardRecord {
     out.writeShort(field_5_comment_length);
 
     out.writeByte(0);
-    out.write(field_6_name_text.getBytes());
+    StringUtil.putCompressedUnicode(field_6_name_text, out);
     out.writeByte(0);
-    out.write(field_7_comment_text.getBytes());
+    StringUtil.putCompressedUnicode(field_7_comment_text, out);
   }
 
   @Override
diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java b/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java
index 2dfe1a01ae..8341f465a5 100644
--- a/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java
+++ b/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java
@@ -2112,4 +2112,15 @@ if(1==2) {
        c.setCellFormula("HLOOKUP(\"v A1\", A1:B2, 1, )");
        assertEquals("v A1", eval.evaluate(c).getStringValue());
     }
+    
+    /**
+     * Mixture of Ascii and Unicode strings in a 
+     *  NameComment record
+     */
+    public void test51143() throws Exception {
+       HSSFWorkbook wb = openSample("51143.xls");
+       assertEquals(1, wb.getNumberOfSheets());
+       wb = writeOutAndReadBack(wb);
+       assertEquals(1, wb.getNumberOfSheets());
+    }
 }
diff --git a/test-data/spreadsheet/51143.xls b/test-data/spreadsheet/51143.xls
new file mode 100644
index 0000000000000000000000000000000000000000..a89a109808d5483a33be0312115f52ad9ad63516
GIT binary patch
literal 17408
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
X)3-k;g|S4Q3zc6YY{_izW%>UF{Vqcj

literal 0
HcmV?d00001