We may need to look this over in the near future.. . I'm not sure its
correct even yet.  It didn't hurt anything though since all unit tests
passed.

On Wed, 2002-03-20 at 21:09, [EMAIL PROTECTED] wrote:
> 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;
>   
>   
>   
-- 
http://www.superlinksoftware.com
http://jakarta.apache.org/poi - port of Excel/Word/OLE 2 Compound
Document 
                            format to java
http://developer.java.sun.com/developer/bugParade/bugs/4487555.html 
                        - fix java generics!
The avalanche has already started. It is too late for the pebbles to
vote.
-Ambassador Kosh

Reply via email to