Edit: The code below has been modified to work as the problem has been solved.
Specifically, (*hardwareList.next_item)->next
My guess the problem is this piece of code: *(hardwareList.next_item)->data
next_item
is a pointer to a pointer, so my guess is that the compiler reads this as *((hardwareList.next_item)->data)
which of course doesn't work - pointers don't have any members in C.
Try ((*(hardwareList.next_item))->data)
to get the correct dereference order.
hardwareList.next_item
is HardwareListItem**
, so operator ->
on it returns HardwareListItem*
, which obviously is not a struct.
You're using too many pointers, it is confusing. Try to simplify your code, you have tons of bugs there.