Ticket #341: delme

File delme, 2.5 KB (added by pavelmachek.livejournal.com, 12 years ago)

these debug checks show the problem

Line 
1Index: navit/route.c
2===================================================================
3--- navit/route.c       (revision 2189)
4+++ navit/route.c       (working copy)
5@@ -72,7 +72,7 @@
6        struct route *route;
7 };
8 
9-int debug_route=0;
10+int debug_route=1;
11 
12 /**
13  * @brief A point in the route graph
14@@ -1453,12 +1453,16 @@
15 static int
16 route_value_seg(struct route_preferences *preferences, struct route_graph_point *from, struct route_segment_data *over, int dir)
17 {
18+       int res;
19 #if 0
20        dbg(0,"flags 0x%x mask 0x%x flags 0x%x\n", over->flags, dir >= 0 ? preferences->flags_forward_mask : preferences->flags_reverse_mask, preferences->flags);
21 #endif
22        if ((over->flags & (dir >= 0 ? preferences->flags_forward_mask : preferences->flags_reverse_mask)) != preferences->flags)
23                return INT_MAX;
24-       return route_time_seg(preferences, over);
25+       res = route_time_seg(preferences, over);
26+       if (res < 0)
27+               printf("cost is under 0\n");
28+       return res;
29 }
30 
31 /**
32@@ -1587,7 +1591,7 @@
33 {
34        struct route_graph_point *p_min;
35        struct route_graph_segment *s;
36-       int min,new,old,val;
37+       int min = -INT_MAX,new,old,val;
38        struct fibheap *heap; /* This heap will hold all points with "temporarily" calculated costs */
39 
40        heap = fh_makeheap();   
41@@ -1617,6 +1621,10 @@
42                p_min=fh_extractmin(heap); /* Starting Dijkstra by selecting the point with the minimum costs on the heap */
43                if (! p_min) /* There are no more points with temporarily calculated costs, Dijkstra has finished */
44                        break;
45+               if (p_min->value < min) {
46+                       printf("got smaller than minimum, something is wrong here\n");
47+                       exit(1);
48+               }
49                min=p_min->value;
50                if (debug_route)
51                        printf("extract p=%p free el=%p min=%d, 0x%x, 0x%x\n", p_min, p_min->el, min, p_min->c.x, p_min->c.y);
52@@ -1626,6 +1634,11 @@
53                        val=route_value_seg(preferences, p_min, &s->data, -1);
54                        if (val != INT_MAX) {
55                                new=min+val;
56+                               if (new<min) {
57+                                       printf("underflow?\n");
58+                                       exit(1);
59+                               }
60+
61                                if (debug_route)
62                                        printf("begin %d len %d vs %d (0x%x,0x%x)\n",new,val,s->end->value, s->end->c.x, s->end->c.y);
63                                if (new < s->end->value) { /* We've found a less costly way to reach the end of s, update it */
64@@ -1654,6 +1667,10 @@
65                        val=route_value_seg(preferences, p_min, &s->data, 1);
66                        if (val != INT_MAX) {
67                                new=min+val;
68+                               if (new<min) {
69+                                       printf("underflow?\n");
70+                                       exit(1);
71+                               }
72                                if (debug_route)
73                                        printf("end %d len %d vs %d (0x%x,0x%x)\n",new,val,s->start->value,s->start->c.x, s->start->c.y);
74                                if (new < s->start->value) {