]> source.dussan.org Git - poi.git/commitdiff
correctly add padding to 16-bit integers
authorSergey Vladimirov <sergey@apache.org>
Sun, 2 Oct 2011 00:55:56 +0000 (00:55 +0000)
committerSergey Vladimirov <sergey@apache.org>
Sun, 2 Oct 2011 00:55:56 +0000 (00:55 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1178111 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/poi/hpsf/VariantSupport.java

index c01b3c57c54a988027c5c1d35179d12eefd478e5..c320435c299610c446c61bf499a747af9ad8b54e 100644 (file)
@@ -477,11 +477,12 @@ public class VariantSupport extends Variant
             case Variant.VT_BOOL:
             {
                 int trueOrFalse;
-                if (((Boolean) value).booleanValue())
-                    trueOrFalse = 1;
+                if ( ( (Boolean) value ).booleanValue() )
+                    trueOrFalse = 0xFFFF;
                 else
-                    trueOrFalse = 0;
-                length = TypeWriter.writeUIntToStream(out, trueOrFalse);
+                    trueOrFalse = 0x0000;
+                TypeWriter.writeUShortToStream( out, trueOrFalse );
+                length += 2;
                 break;
             }
             case Variant.VT_LPSTR:
@@ -534,7 +535,13 @@ public class VariantSupport extends Variant
             case Variant.VT_I2:
             {
                 TypeWriter.writeToStream(out, ((Integer) value).shortValue());
-                length = LittleEndianConsts.SHORT_SIZE;
+                // length = LittleEndianConsts.SHORT_SIZE;
+                TypeWriter.writeToStream( out, (short) 0x0000 );
+                /*
+                 * MUST be a 16-bit signed integer, followed by zero padding to 4
+                 * bytes -- http://msdn.microsoft.com/en-us/library/dd942532(v=PROT.13).aspx
+                 */
+                length = LittleEndianConsts.INT_SIZE;
                 break;
             }
             case Variant.VT_I4: