Hao Zhong created LUCENENET-652: ----------------------------------- Summary: 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
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)