acoliver 02/03/20 18:09:31
Modified: src/java/org/apache/poi/hssf/record FooterRecord.java
HeaderRecord.java
Log:
Applied fixes from Shawn Laubach for footer and header records
Revision Changes Path
1.5 +7 -7
jakarta-poi/src/java/org/apache/poi/hssf/record/FooterRecord.java
Index: FooterRecord.java
===================================================================
RCS file:
/home/cvs/jakarta-poi/src/java/org/apache/poi/hssf/record/FooterRecord.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- FooterRecord.java 1 Mar 2002 13:10:15 -0000 1.4
+++ FooterRecord.java 21 Mar 2002 02:09:31 -0000 1.5
@@ -117,7 +117,7 @@
if (size > 0)
{
field_1_footer_len = data[ 0 + offset ];
- field_2_footer = new String(data, 1 + offset,
+ field_2_footer = new String(data, 3 + offset, // [Shawn] Changed 1
to 3 for offset of string
LittleEndian.ubyteToInt(
field_1_footer_len) );
}
}
@@ -153,9 +153,9 @@
* @see #getFooter()
*/
- public byte getFooterLength()
+ public short getFooterLength()
{
- return field_1_footer_len;
+ return (short)(0xFF & field_1_footer_len); // [Shawn] Fixed needing
unsigned byte
}
/**
@@ -189,15 +189,15 @@
if (getFooterLength() > 0)
{
- len++;
+ len+=3; // [Shawn] Fixed for two null bytes in the length
}
LittleEndian.putShort(data, 0 + offset, sid);
LittleEndian.putShort(data, 2 + offset,
( short ) ((len - 4) + getFooterLength()));
if (getFooterLength() > 0)
{
- data[ 4 + offset ] = getFooterLength();
- StringUtil.putCompressedUnicode(getFooter(), data, 5 + offset);
+ data[ 4 + offset ] = (byte)getFooterLength();
+ StringUtil.putCompressedUnicode(getFooter(), data, 7 + offset); //
[Shawn] Place the string in the correct offset
}
return getRecordSize();
}
@@ -208,7 +208,7 @@
if (getFooterLength() > 0)
{
- retval++;
+ retval+=3; // [Shawn] Fixed for two null bytes in the length
}
return retval + getFooterLength();
}
1.5 +8 -7
jakarta-poi/src/java/org/apache/poi/hssf/record/HeaderRecord.java
Index: HeaderRecord.java
===================================================================
RCS file:
/home/cvs/jakarta-poi/src/java/org/apache/poi/hssf/record/HeaderRecord.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- HeaderRecord.java 1 Mar 2002 13:10:15 -0000 1.4
+++ HeaderRecord.java 21 Mar 2002 02:09:31 -0000 1.5
@@ -117,7 +117,7 @@
if (size > 0)
{
field_1_header_len = data[ 0 + offset ];
- field_2_header = new String(data, 1 + offset,
+ field_2_header = new String(data, 3 + offset, // [Shawn] Changed 1
to 3 for offset of string
LittleEndian.ubyteToInt(field_1_header_len));
}
}
@@ -153,9 +153,9 @@
* @see #getHeader()
*/
- public byte getHeaderLength()
+ public short getHeaderLength()
{
- return field_1_header_len;
+ return (short)(0xFF & field_1_header_len); // [Shawn] Fixed needing
unsigned byte
}
/**
@@ -189,15 +189,16 @@
if (getHeaderLength() != 0)
{
- len++;
+ len+=3; // [Shawn] Fixed for two null bytes in the length
}
LittleEndian.putShort(data, 0 + offset, sid);
LittleEndian.putShort(data, 2 + offset,
( short ) ((len - 4) + getHeaderLength()));
+
if (getHeaderLength() > 0)
{
- data[ 4 + offset ] = getHeaderLength();
- StringUtil.putCompressedUnicode(getHeader(), data, 5 + offset);
+ data[ 4 + offset ] = (byte)getHeaderLength();
+ StringUtil.putCompressedUnicode(getHeader(), data, 7 + offset); //
[Shawn] Place the string in the correct offset
}
return getRecordSize();
}
@@ -208,7 +209,7 @@
if (getHeaderLength() != 0)
{
- retval++;
+ retval+=3; // [Shawn] Fixed for two null bytes in the length
}
retval += getHeaderLength();
return retval;