Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
3.3
-
None
-
None
Description
DummyStepInterpolator.java
public DummyStepInterpolator(final DummyStepInterpolator interpolator) { super(interpolator); currentDerivative = interpolator.currentDerivative.clone(); } @Override protected StepInterpolator doCopy() { return new DummyStepInterpolator(this); }
A constructor in DummyStepInterpolator dereferences a field of the parameter, but a NullPointerException can occur during a call to doCopy().
Test.java
public void test1() throws Throwable { DummyStepInterpolator var0 = new DummyStepInterpolator(); var0.copy(); }
Here in Test.java, a NPE occurs because copy() calls doCopy() which calls DummyStepInterpolator(final DummyStepInterpolator) that passes var0 as an argument.
I think this constructor should have a null check for interpolator.currentDerivative like NordsieckStepInterpolator does.
NordsieckStepInterpolator.java
public NordsieckStepInterpolator(final NordsieckStepInterpolator interpolator) { super(interpolator); scalingH = interpolator.scalingH; referenceTime = interpolator.referenceTime; if (interpolator.scaled != null) { scaled = interpolator.scaled.clone(); } if (interpolator.nordsieck != null) { nordsieck = new Array2DRowRealMatrix(interpolator.nordsieck.getDataRef(), true); } if (interpolator.stateVariation != null) { stateVariation = interpolator.stateVariation.clone(); } } @Override protected StepInterpolator doCopy() { return new NordsieckStepInterpolator(this); }