Skip to content

Weird pointer issues #3

Description

@eddiedingle97

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?

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions