Author: amol Date: Wed Aug 9 13:26:40 2006 New Revision: 430137 URL: http://svn.apache.org/viewvc?rev=430137&view=rev Log: In setCellFormula(String) the Ptg stack in FormulaRecord is cleared before filling it with new values. Prior to this fix, repeated calls to setCellFormula would keep accumulating Ptgs in the stack although only the topmost "size" number of Ptgs would ever be used.
Modified: jakarta/poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFCell.java Modified: jakarta/poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFCell.java URL: http://svn.apache.org/viewvc/jakarta/poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFCell.java?rev=430137&r1=430136&r2=430137&view=diff ============================================================================== --- jakarta/poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFCell.java (original) +++ jakarta/poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFCell.java Wed Aug 9 13:26:40 2006 @@ -597,8 +597,9 @@ } else { setCellType(CELL_TYPE_FORMULA,false,row,col,styleIndex); FormulaRecordAggregate rec = (FormulaRecordAggregate) record; - rec.getFormulaRecord().setOptions(( short ) 2); - rec.getFormulaRecord().setValue(0); + FormulaRecord frec = rec.getFormulaRecord(); + frec.setOptions(( short ) 2); + frec.setValue(0); //only set to default if there is no extended format index already set if (rec.getXFIndex() == (short)0) rec.setXFIndex(( short ) 0x0f); @@ -606,10 +607,16 @@ fp.parse(); Ptg[] ptg = fp.getRPNPtg(); int size = 0; - //System.out.println("got Ptgs " + ptg.length); + + // clear the Ptg Stack + for (int i=0, iSize=frec.getNumberOfExpressionTokens(); i<iSize; i++) { + frec.popExpressionToken(); + } + + // fill the Ptg Stack with Ptgs of new formula for (int k = 0; k < ptg.length; k++) { size += ptg[ k ].getSize(); - rec.getFormulaRecord().pushExpressionToken(ptg[ k ]); + frec.pushExpressionToken(ptg[ k ]); } rec.getFormulaRecord().setExpressionLength(( short ) size); //Workbook.currentBook = null; --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] Mailing List: http://jakarta.apache.org/site/mail2.html#poi The Apache Jakarta POI Project: http://jakarta.apache.org/poi/