[ 
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)

Reply via email to