[ https://issues.apache.org/jira/browse/LUCENENET-652?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Hao Zhong closed LUCENENET-652. ------------------------------- Resolution: Fixed Sorry, this is a problem of lucene, not lucene.net > SpatialArgs.calcDistanceFromErrPct is not checked agaist null ctx > ----------------------------------------------------------------- > > Key: LUCENENET-652 > URL: https://issues.apache.org/jira/browse/LUCENENET-652 > Project: Lucene.Net > Issue Type: Bug > Reporter: Hao Zhong > Priority: Major > > The code is as follows: > > {color:#7f0055}public{color}{color:#000000} > {color}{color:#7f0055}static{color}{color:#000000} > {color}{color:#7f0055}double{color}{color:#000000} > calcDistanceFromErrPct({color}{color:#000000}Shape{color}{color:#000000} > {color}{color:#6a3e3e}shape{color}{color:#000000}, > {color}{color:#7f0055}double{color}{color:#000000} > {color}{color:#6a3e3e}distErrPct{color}{color:#000000}, > {color}{color:#000000}SpatialContext{color}{color:#000000} > {color}{color:#6a3e3e}ctx{color}{color:#000000}) {{color} > {color:#7f0055}if{color}{color:#000000} > ({color}{color:#6a3e3e}distErrPct{color}{color:#000000} < 0 || > {color}{color:#6a3e3e}distErrPct{color}{color:#000000} > 0.5) {{color} > {color:#7f0055}throw{color}{color:#000000} > {color}{color:#7f0055}new{color}{color:#000000} > IllegalArgumentException({color} > {color:#2a00ff}"distErrPct "{color}{color:#000000} + > {color}{color:#6a3e3e}distErrPct{color}{color:#000000} + > {color}{color:#2a00ff}" must be between [0 to > 0.5]"{color}{color:#000000});{color} > {color:#000000} }{color} > {color:#7f0055}if{color}{color:#000000} > ({color}{color:#6a3e3e}distErrPct{color}{color:#000000} == 0 || > {color}{color:#6a3e3e}shape{color}{color:#000000} > {color}{color:#7f0055}instanceof{color}{color:#000000} > {color}{color:#000000}Point{color}{color:#000000}) {{color} > {color:#7f0055}return{color}{color:#000000} 0;{color} > {color:#000000} }{color} > {color:#000000}Rectangle{color}{color:#000000} > {color}{color:#6a3e3e}bbox{color}{color:#000000} = > {color}{color:#6a3e3e}shape{color}{color:#000000}.getBoundingBox();{color} > {color:#3f7f5f}// Compute the distance from the center to a corner. Because > the distance{color} > {color:#3f7f5f}// to a bottom corner vs a top corner can vary in a > {color}{color:#3f7f5f}geospatial{color}{color:#3f7f5f} scenario,{color} > {color:#3f7f5f}// take the closest one (greater precision).{color} > {color:#000000}Point{color}{color:#000000} > {color}{color:#6a3e3e}ctr{color}{color:#000000} = > {color}{color:#6a3e3e}bbox{color}{color:#000000}.getCenter();{color} > {color:#7f0055}double{color}{color:#000000} > {color}{color:#6a3e3e}y{color}{color:#000000} = > ({color}{color:#6a3e3e}ctr{color}{color:#000000}.getY() >= 0 ? > {color}{color:#6a3e3e}bbox{color}{color:#000000}.getMaxY() : > {color}{color:#6a3e3e}bbox{color}{color:#000000}.getMinY());{color} > {color:#7f0055}double{color}{color:#000000} > {color}{color:#6a3e3e}diagonalDist{color}{color:#000000} = > {color}{color:#6a3e3e}ctx{color}{color:#000000}.getDistCalc().distance({color}{color:#6a3e3e}ctr{color}{color:#000000}, > {color}{color:#6a3e3e}bbox{color}{color:#000000}.getMaxX(), > {color}{color:#6a3e3e}y{color}{color:#000000});{color} > {color:#7f0055}return{color}{color:#000000} > {color}{color:#6a3e3e}diagonalDist{color}{color:#000000} * > {color}{color:#6a3e3e}distErrPct{color}{color:#000000};{color} > {color:#000000} }{color} > {color:#000000}dif ctx is null, {color:#6a3e3e}ctx{color}.getDistCalc() will > throw exceptions. I notice that lucene.net does not check this value in a > previous version, but it fixes the problem in a commit:{color} > [https://github.com/apache/lucenenet/commit/bf29f494e3663296ae4c17e4a9e7f173e4237a19] > > The patch is as follows: > > public static double CalcDistanceFromErrPct(IShape shape, double > distErrPct, SpatialContext ctx) > { > + // LUCENENET: Added null guard clause > + if (ctx is null) > + throw new ArgumentNullException(nameof(ctx)); > -- This message was sent by Atlassian Jira (v8.20.10#820010)