diff --git a/panda/src/gobj/geomVertexArrayData.cxx b/panda/src/gobj/geomVertexArrayData.cxx index 4ab1baf165..75a9a5db20 100644 --- a/panda/src/gobj/geomVertexArrayData.cxx +++ b/panda/src/gobj/geomVertexArrayData.cxx @@ -59,8 +59,10 @@ ALLOC_DELETED_CHAIN_DEF(GeomVertexArrayDataHandle); * file. */ GeomVertexArrayData:: -GeomVertexArrayData() : SimpleLruPage(0) { - _contexts = nullptr; +GeomVertexArrayData() : + SimpleLruPage(0), + _array_format(nullptr), + _contexts(nullptr) { // Can't put it in the LRU until it has been read in and made valid. } @@ -180,7 +182,8 @@ set_usage_hint(GeomVertexArrayData::UsageHint usage_hint) { */ void GeomVertexArrayData:: output(std::ostream &out) const { - out << get_num_rows() << " rows: " << *get_array_format(); + nassertv(_array_format != nullptr); + out << get_num_rows() << " rows: " << *_array_format; } /** @@ -188,6 +191,7 @@ output(std::ostream &out) const { */ void GeomVertexArrayData:: write(std::ostream &out, int indent_level) const { + nassertv(_array_format != nullptr); _array_format->write_with_data(out, indent_level, this); } diff --git a/panda/src/gobj/geomVertexData.I b/panda/src/gobj/geomVertexData.I index d0c6bba632..f2edebdeaa 100644 --- a/panda/src/gobj/geomVertexData.I +++ b/panda/src/gobj/geomVertexData.I @@ -582,6 +582,7 @@ CacheEntry(GeomVertexData *source, CacheKey &&key) noexcept : */ INLINE GeomVertexData::CData:: CData() : + _format(nullptr), _usage_hint(UH_unspecified) { } diff --git a/panda/src/gobj/geomVertexData.cxx b/panda/src/gobj/geomVertexData.cxx index d77ca492a1..5eb3ac6352 100644 --- a/panda/src/gobj/geomVertexData.cxx +++ b/panda/src/gobj/geomVertexData.cxx @@ -1268,7 +1268,9 @@ output(ostream &out) const { if (!get_name().empty()) { out << get_name() << " "; } - out << get_num_rows() << " rows: " << *get_format(); + const GeomVertexFormat *format = get_format(); + nassertv(format != nullptr); + out << get_num_rows() << " rows: " << *format; } /** @@ -1279,8 +1281,15 @@ write(ostream &out, int indent_level) const { if (!get_name().empty()) { indent(out, indent_level) << get_name() << "\n"; } - get_format()->write_with_data(out, indent_level + 2, this); - CPT(TransformBlendTable) table = get_transform_blend_table(); + CPT(TransformBlendTable) table; + const GeomVertexFormat *format = nullptr; + { + CDReader cdata(_cycler); + format = cdata->_format; + table = cdata->_transform_blend_table.get_read_pointer(); + } + nassertv(format != nullptr); + format->write_with_data(out, indent_level + 2, this); if (table != nullptr) { indent(out, indent_level) << "Transform blend table:\n";