summaryrefslogtreecommitdiff
blob: 12c19bbdd67151922fd33243c7f58fad4ba90e28 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
commit 65261a83e7269906f726f14d7e8cc30e5f9901f0
Author: Dmitry Rozhkov <dmitry.rozhkov@linux.intel.com>
Date:   Fri Jun 16 14:50:52 2017 +0300

    amcl: fix compilation with gcc v7
    
    When building amcl with recent enough gcc v7 compilation fails with
    the error
    
    src/amcl/map/map_cspace.cpp: In function 'void enqueue(map_t*, unsigned int, unsigned int, unsigned int, unsigned int, std::priority_queue<CellData>&, CachedDistanceMap*, unsigned char*)':
    src/amcl/map/map_cspace.cpp:98:34: error: call of overloaded 'abs(unsigned int)' is ambiguous
       unsigned int di = abs(i - src_i);
    
    Use `int abs(int)` flavour of the abs() function.

diff --git a/amcl/src/amcl/map/map_cspace.cpp b/amcl/src/amcl/map/map_cspace.cpp
index 421f718..5b4cf9c 100644
--- a/amcl/src/amcl/map/map_cspace.cpp
+++ b/amcl/src/amcl/map/map_cspace.cpp
@@ -86,8 +86,8 @@ get_distance_map(double scale, double max_dist)
   return cdm;
 }
 
-void enqueue(map_t* map, unsigned int i, unsigned int j, 
-	     unsigned int src_i, unsigned int src_j,
+void enqueue(map_t* map, int i, int j,
+	     int src_i, int src_j,
 	     std::priority_queue<CellData>& Q,
 	     CachedDistanceMap* cdm,
 	     unsigned char* marked)
@@ -95,8 +95,8 @@ void enqueue(map_t* map, unsigned int i, unsigned int j,
   if(marked[MAP_INDEX(map, i, j)])
     return;
 
-  unsigned int di = abs(i - src_i);
-  unsigned int dj = abs(j - src_j);
+  int di = abs(i - src_i);
+  int dj = abs(j - src_j);
   double distance = cdm->distances_[di][dj];
 
   if(distance > cdm->cell_radius_)