From 10f1ffa9a7fd353166e7b339f94190e6363566ae Mon Sep 17 00:00:00 2001 From: Sam Edwards Date: Fri, 23 Feb 2018 01:27:34 -0700 Subject: [PATCH] express: Fix Datagram::modify_array() This just copies the array initialization out of append_data, so a COW/uninitialized Datagram can be initialized with modify_array() --- panda/src/express/datagram.I | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/panda/src/express/datagram.I b/panda/src/express/datagram.I index 0ad4007b26..fa6063805b 100644 --- a/panda/src/express/datagram.I +++ b/panda/src/express/datagram.I @@ -408,6 +408,17 @@ get_array() const { */ INLINE PTA_uchar Datagram:: modify_array() { + if (_data == (uchar *)NULL) { + // Create a new array. + _data = PTA_uchar::empty_array(0); + + } else if (_data.get_ref_count() != 1) { + // Copy on write. + PTA_uchar new_data = PTA_uchar::empty_array(0); + new_data.v() = _data.v(); + _data = new_data; + } + return _data; }