Fix for corner cases of API location_boundary_on_path 11/244511/1 accepted/tizen_5.5_unified tizen_5.5 accepted/tizen/5.5/unified/20200923.234128 submit/tizen_5.5/20200921.064541
authorchakradhar <v.pogiri@samsung.com>
Mon, 21 Sep 2020 06:38:48 +0000 (12:08 +0530)
committerchakradhar <v.pogiri@samsung.com>
Mon, 21 Sep 2020 06:38:48 +0000 (12:08 +0530)
Change-Id: I69625d052ed13f5a6d6aeaf1f58395a777aa86c7

location/manager/location-boundary.c

index 920d563..05a2b6c 100644 (file)
@@ -381,10 +381,10 @@ location_boundary_on_path(LocationBoundary *boundary, LocationPosition *position
 
                                        px = x1 - x2;
                                        norm = y1 * y1 + px * px;
-                                       u = ( y3 * y1 + ( x3 - x2 ) * px ) / norm;
                                        if(norm <= 0){
                                                u = 0;
                                        }else{
+                                               u = ( y3 * y1 + ( x3 - x2 ) * px ) / norm;
                                                if( u > 1){
                                                        u = 1;
                                                }else if (u < 0){
@@ -420,7 +420,7 @@ location_boundary_on_path(LocationBoundary *boundary, LocationPosition *position
                        center.longitude = boundary->circle.center->longitude;
 
                        location_get_distance(&center, position, &distance);
-                       if (distance < boundary->circle.radius + tolerance) {
+                       if (distance < boundary->circle.radius + tolerance && distance > boundary->circle.radius - tolerance) {
                                return TRUE;
                        }
                        break;
@@ -467,10 +467,10 @@ location_boundary_on_path(LocationBoundary *boundary, LocationPosition *position
 
                                        px = x1 - x2;
                                        norm = y1 * y1 + px * px;
-                                       u = ( y3 * y1 + ( x3 - x2 ) * px ) / norm;
                                        if(norm <= 0){
                                                u = 0;
                                        }else{
+                                               u = ( y3 * y1 + ( x3 - x2 ) * px ) / norm;
                                                if( u > 1){
                                                        u = 1;
                                                }else if (u < 0){