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;
  
  
  


Reply via email to