acoliver    2002/07/14 19:06:22

  Modified:    src/java/org/apache/poi/hssf/model FormulaParser.java
  Log:
  patch from Eric Ladner to correct an out of bounds on the formula string
  http://nagoya.apache.org/bugzilla/show_bug.cgi?id=10735
  
  Revision  Changes    Path
  1.2       +12 -2     
jakarta-poi/src/java/org/apache/poi/hssf/model/FormulaParser.java
  
  Index: FormulaParser.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-poi/src/java/org/apache/poi/hssf/model/FormulaParser.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- FormulaParser.java        15 Jul 2002 00:16:24 -0000      1.1
  +++ FormulaParser.java        15 Jul 2002 02:06:22 -0000      1.2
  @@ -79,6 +79,7 @@
    *
    *  @author Avik Sengupta <avik AT Avik Sengupta DOT com>
    *  @author Andrew C. oliver (acoliver at apache dot org)
  + *  @author Eric Ladner (eladner at goldinc dot com)
    */
   public class FormulaParser {
       
  @@ -90,6 +91,7 @@
       
       private String formulaString;
       private int pointer=0;
  +    private int formulaLength;
       
       private List tokens = new java.util.Stack();
       //private Stack tokens = new java.util.Stack();
  @@ -113,11 +115,19 @@
           formulaString = formula;
           pointer=0;
           this.book = book;
  +     formulaLength = formulaString.length();
       }
       
   
       /** Read New Character From Input Stream */
       private void GetChar() {
  +        // Check to see if we've walked off the end of the string.
  +     // Just return if so and reset Look to smoething to keep 
  +     // SkipWhitespace from spinning
  +        if (pointer == formulaLength) {
  +            Look = (char)0;
  +         return;
  +     }
           Look=formulaString.charAt(pointer++);
           //System.out.println("Got char: "+Look);
       }
  @@ -420,8 +430,8 @@
           while (IsAddop(Look)) {
               if ( Look == '+' )  Add();
               if (Look == '-') Subtract();
  -            // if (Look == '*') Multiply();
  -           // if (Look == '/') Divide();
  +            if (Look == '*') Multiply();
  +            if (Look == '/') Divide();
           }
       }
       
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to