summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/ofpbuf.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/lib/ofpbuf.c b/lib/ofpbuf.c
index eab523e31..1a090ee9c 100644
--- a/lib/ofpbuf.c
+++ b/lib/ofpbuf.c
@@ -185,7 +185,11 @@ ofpbuf_clone_with_headroom(const struct ofpbuf *b, size_t headroom)
new_buffer->header = (char *) new_buffer->data + header_offset;
}
- new_buffer->msg = b->msg;
+ if (b->msg) {
+ ptrdiff_t msg_offset = (char *) b->msg - (char *) b->data;
+
+ new_buffer->msg = (char *) new_buffer->data + msg_offset;
+ }
return new_buffer;
}