I'm having a very strange issue and I don't know how to further debug. I'm trying to implement this hashtable into some code I wrote (in my "sprites" repo branch "htbroken") and the key pointer argument is changing when I step into the "ht__put" function with a debugger. Here's the relevant section of code just copy pasted:
struct coord
{
int x;
int y;
};
Ht(struct coord *, struct coord *) camefrom =
{
.count = 0,
.hasheq = ht_mem_hasheq,
.impl_filled_slots = 0,
.impl_capacity = 0,
};
Ht(struct coord *, float *) costsofar =
{
.count = 0,
.hasheq = ht_mem_hasheq,
.impl_filled_slots = 0,
.impl_capacity = 0,
};
float *dist = NULL;
int i;
*no = 0;
pq_insert(frontier, 0, start);
*ht_put(&camefrom, start) = start;
I put the initializations for the ht structs (i.e. .count = 0, .impl_filled_slots = 0) because it was seg faulting after picking up some garbage from memory I guess.
I run this in gdb and add a break point at that first "ht_put":
(gdb) break mapgenerator.c:1322
Breakpoint 1 at 0x1817a: file src/mapgenerator.c, line 1322.
(gdb) run
...
1322 *ht_put(&camefrom, start) = start;
(gdb) print start
$1 = (struct coord *) 0x7fffffffd670
(gdb) s
ht__put (ht=0x7fffffffd530, key=0x7fffffffd590, l=...) at src/ht.h:563
563 ht__expand(ht, l);
You can see I put "start" in as a key, it ends in d670. Then the "key" argument comes out ending with d590. I am totally at a loss here. Maybe there some macro stuff I'm not understanding?
I'm having a very strange issue and I don't know how to further debug. I'm trying to implement this hashtable into some code I wrote (in my "sprites" repo branch "htbroken") and the key pointer argument is changing when I step into the "ht__put" function with a debugger. Here's the relevant section of code just copy pasted:
I put the initializations for the ht structs (i.e. .count = 0, .impl_filled_slots = 0) because it was seg faulting after picking up some garbage from memory I guess.
I run this in gdb and add a break point at that first "ht_put":
...
You can see I put "start" in as a key, it ends in d670. Then the "key" argument comes out ending with d590. I am totally at a loss here. Maybe there some macro stuff I'm not understanding?