Loading slirp/mbuf.c +7 −7 Original line number Diff line number Diff line Loading @@ -151,7 +151,7 @@ m_cat(struct mbuf *m, struct mbuf *n) void m_inc(struct mbuf *m, int size) { int datasize; int gapsize; /* some compilers throw up on gotos. This one we can fake. */ if (M_ROOM(m) > size) { Loading @@ -159,17 +159,17 @@ m_inc(struct mbuf *m, int size) } if (m->m_flags & M_EXT) { datasize = m->m_data - m->m_ext; m->m_ext = g_realloc(m->m_ext, size + datasize); gapsize = m->m_data - m->m_ext; m->m_ext = g_realloc(m->m_ext, size + gapsize); } else { datasize = m->m_data - m->m_dat; m->m_ext = g_malloc(size + datasize); gapsize = m->m_data - m->m_dat; m->m_ext = g_malloc(size + gapsize); memcpy(m->m_ext, m->m_dat, m->m_size); m->m_flags |= M_EXT; } m->m_data = m->m_ext + datasize; m->m_size = size + datasize; m->m_data = m->m_ext + gapsize; m->m_size = size + gapsize; } Loading slirp/mbuf.h +13 −0 Original line number Diff line number Diff line Loading @@ -47,6 +47,19 @@ * free the m_ext. This is inefficient memory-wise, but who cares. */ /* * mbufs allow to have a gap between the start of the allocated buffer (m_ext if * M_EXT is set, m_dat otherwise) and the in-use data: * * |--gapsize----->|---m_len-------> * |----------m_size------------------------------> * |----M_ROOM--------------------> * |-M_FREEROOM--> * * ^ ^ ^ * m_dat/m_ext m_data end of buffer */ /* * How much room is in the mbuf, from m_data to the end of the mbuf */ Loading Loading
slirp/mbuf.c +7 −7 Original line number Diff line number Diff line Loading @@ -151,7 +151,7 @@ m_cat(struct mbuf *m, struct mbuf *n) void m_inc(struct mbuf *m, int size) { int datasize; int gapsize; /* some compilers throw up on gotos. This one we can fake. */ if (M_ROOM(m) > size) { Loading @@ -159,17 +159,17 @@ m_inc(struct mbuf *m, int size) } if (m->m_flags & M_EXT) { datasize = m->m_data - m->m_ext; m->m_ext = g_realloc(m->m_ext, size + datasize); gapsize = m->m_data - m->m_ext; m->m_ext = g_realloc(m->m_ext, size + gapsize); } else { datasize = m->m_data - m->m_dat; m->m_ext = g_malloc(size + datasize); gapsize = m->m_data - m->m_dat; m->m_ext = g_malloc(size + gapsize); memcpy(m->m_ext, m->m_dat, m->m_size); m->m_flags |= M_EXT; } m->m_data = m->m_ext + datasize; m->m_size = size + datasize; m->m_data = m->m_ext + gapsize; m->m_size = size + gapsize; } Loading
slirp/mbuf.h +13 −0 Original line number Diff line number Diff line Loading @@ -47,6 +47,19 @@ * free the m_ext. This is inefficient memory-wise, but who cares. */ /* * mbufs allow to have a gap between the start of the allocated buffer (m_ext if * M_EXT is set, m_dat otherwise) and the in-use data: * * |--gapsize----->|---m_len-------> * |----------m_size------------------------------> * |----M_ROOM--------------------> * |-M_FREEROOM--> * * ^ ^ ^ * m_dat/m_ext m_data end of buffer */ /* * How much room is in the mbuf, from m_data to the end of the mbuf */ Loading