diff --git a/pandatool/src/flt/fltRecordReader.cxx b/pandatool/src/flt/fltRecordReader.cxx index c999001d64..4f1ccfe1bb 100644 --- a/pandatool/src/flt/fltRecordReader.cxx +++ b/pandatool/src/flt/fltRecordReader.cxx @@ -131,12 +131,13 @@ advance(bool ok_eof) { // And now read the full record based on the length. int length = _next_record_length - header_size; - char *buffer = new char[length]; if (length > 0) { - _in.read(buffer, length); + vector_uchar data((size_t)length); + _in.read((char *)&data[0], length); + _datagram = Datagram(std::move(data)); + } else { + _datagram = Datagram(); } - _datagram = Datagram(buffer, length); - delete[] buffer; if (_in.eof()) { _state = S_eof; @@ -162,12 +163,12 @@ advance(bool ok_eof) { _record_length += _next_record_length; length = _next_record_length - header_size; - buffer = new char[length]; if (length > 0) { + char *buffer = new char[length]; _in.read(buffer, length); + _datagram.append_data(buffer, length); + delete[] buffer; } - _datagram.append_data(buffer, length); - delete[] buffer; if (_in.eof()) { _state = S_eof;