You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by fa...@apache.org on 2022/06/05 19:25:07 UTC

svn commit: r1901685 - in /poi/trunk/poi/src: main/java/org/apache/poi/ss/formula/functions/Correl.java test/java/org/apache/poi/ss/formula/functions/TestCorrel.java

Author: fanningpj
Date: Sun Jun  5 19:25:07 2022
New Revision: 1901685

URL: http://svn.apache.org/viewvc?rev=1901685&view=rev
Log:
mismatched array sizes

Modified:
    poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/Correl.java
    poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestCorrel.java

Modified: poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/Correl.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/Correl.java?rev=1901685&r1=1901684&r2=1901685&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/Correl.java (original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/Correl.java Sun Jun  5 19:25:07 2022
@@ -66,9 +66,13 @@ public class Correl extends Fixed2ArgFun
     private List<DoubleList> getNumberArrays(ValueEval operand0, ValueEval operand1) throws EvaluationException {
         double[] retval0 = collectValuesWithBlanks(operand0).toArray();
         double[] retval1 = collectValuesWithBlanks(operand1).toArray();
+        if (retval0.length != retval1.length) {
+            throw new EvaluationException(ErrorEval.NA);
+        }
         DoubleList filtered0 = new DoubleList();
         DoubleList filtered1 = new DoubleList();
-        for (int i = 0; i < retval0.length; i++) {
+        int len = Math.min(retval0.length, retval1.length);
+        for (int i = 0; i < len; i++) {
             if (Double.isNaN(retval0[i]) || Double.isNaN(retval1[i])) {
                 //ignore
             } else {

Modified: poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestCorrel.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestCorrel.java?rev=1901685&r1=1901684&r2=1901685&view=diff
==============================================================================
--- poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestCorrel.java (original)
+++ poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestCorrel.java Sun Jun  5 19:25:07 2022
@@ -22,12 +22,14 @@ import org.apache.poi.hssf.usermodel.HSS
 import org.apache.poi.hssf.usermodel.HSSFRow;
 import org.apache.poi.hssf.usermodel.HSSFSheet;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.ss.usermodel.FormulaError;
 import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
 
 import static org.apache.poi.ss.util.Utils.addRow;
 import static org.apache.poi.ss.util.Utils.assertDouble;
+import static org.apache.poi.ss.util.Utils.assertError;
 
 /**
  * Tests for {@link Correl}
@@ -68,6 +70,18 @@ final class TestCorrel {
         }
     }
 
+    @Test
+    void testMismatch() throws IOException {
+        try (HSSFWorkbook wb = initWorkbook1()) {
+            HSSFSheet sheet = wb.getSheetAt(0);
+            HSSFRow row = sheet.getRow(0);
+            HSSFCell cell = row.createCell(100);
+            HSSFFormulaEvaluator fe = new HSSFFormulaEvaluator(wb);
+            assertError(fe, cell, "CORREL(A2:A6,B2:B5)", FormulaError.NA);
+            assertError(fe, cell, "CORREL(A2:B6,B2:B6)", FormulaError.NA);
+        }
+    }
+
     private HSSFWorkbook initWorkbook1() {
         return initWorkbook1(Double.valueOf(15));
     }



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org