Fix alignment issues in allocator
Change struct pbuf to struct pbuf_ram
diff --git a/src/core/pbuf-ram.c b/src/core/pbuf-ram.c
index d85b698..880a3b2 100644
--- a/src/core/pbuf-ram.c
+++ b/src/core/pbuf-ram.c
@@ -49,13 +49,15 @@
pbuf_ram_alloc(u16_t offset, u16_t size, struct pbuf_manager *mgr, void *src){
struct pbuf_ram *p;
- p = mem_malloc(MEM_ALIGN_SIZE(sizeof(struct pbuf_ram) + offset + size));
+ p = mem_malloc(MEM_ALIGN_SIZE(sizeof(struct pbuf_ram) + offset) +
+ MEM_ALIGN_SIZE(size));
if (p == NULL) {
+ UserPrint("pbuf_ram_alloc: mem_malloc failed!\n");
return NULL;
}
p->next = NULL;
- p->payload = MEM_ALIGN((void*)((u8_t*)p + sizeof(struct pbuf) + offset));
+ p->payload = MEM_ALIGN((void*)((u8_t*)p + sizeof(struct pbuf_ram) + offset));
p->manager = mgr;
p->tot_len = size;
p->len = size;
@@ -84,6 +86,11 @@
struct pbuf_ram *q = (struct pbuf_ram*)p;
LWIP_ASSERT("pbuf_ram_free(): pbuf was not a ram pbuf!",
(q->magic==PBUF_RAM_MAGIC));
+
+ /* make faults more obvious */
+ p->manager = NULL;
+ p->payload = NULL;
+
#endif
mem_free(p);
}