From 2aa2a35a9fab8aea2a44cf70b9e01755ec3484dd Mon Sep 17 00:00:00 2001 From: rdb Date: Mon, 26 Dec 2022 11:18:00 +0100 Subject: [PATCH] pstats: Fix regression: crash when opening session file --- panda/src/pstatclient/pStatFrameData.h | 2 +- pandatool/src/pstatserver/pStatClientData.cxx | 2 +- pandatool/src/pstatserver/pStatThreadData.cxx | 4 ++-- pandatool/src/pstatserver/pStatThreadData.h | 3 ++- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/panda/src/pstatclient/pStatFrameData.h b/panda/src/pstatclient/pStatFrameData.h index 3f506ea98e..2df430fbd6 100644 --- a/panda/src/pstatclient/pStatFrameData.h +++ b/panda/src/pstatclient/pStatFrameData.h @@ -58,7 +58,7 @@ public: INLINE double get_level(size_t n) const; bool write_datagram(Datagram &destination, PStatClient *client = nullptr) const; - void read_datagram(DatagramIterator &source, PStatClientVersion *version = nullptr); + void read_datagram(DatagramIterator &source, PStatClientVersion *version); private: class DataPoint { diff --git a/pandatool/src/pstatserver/pStatClientData.cxx b/pandatool/src/pstatserver/pStatClientData.cxx index 1f28caefcf..3c709d8a80 100644 --- a/pandatool/src/pstatserver/pStatClientData.cxx +++ b/pandatool/src/pstatserver/pStatClientData.cxx @@ -471,7 +471,7 @@ read_datagram(DatagramIterator &scan) { std::string name = scan.get_string(); define_thread(thread_index, name); - _threads[thread_index]._data->read_datagram(scan); + _threads[thread_index]._data->read_datagram(scan, this); } update_toplevel_collectors(); diff --git a/pandatool/src/pstatserver/pStatThreadData.cxx b/pandatool/src/pstatserver/pStatThreadData.cxx index a8b1861a88..7ef7fe79a9 100644 --- a/pandatool/src/pstatserver/pStatThreadData.cxx +++ b/pandatool/src/pstatserver/pStatThreadData.cxx @@ -328,11 +328,11 @@ write_datagram(Datagram &dg) const { * Restores the thread data from a datagram. */ void PStatThreadData:: -read_datagram(DatagramIterator &scan) { +read_datagram(DatagramIterator &scan, PStatClientVersion *version) { int frame_number; while ((frame_number = scan.get_int32()) != -1) { PStatFrameData *frame_data = new PStatFrameData; - frame_data->read_datagram(scan); + frame_data->read_datagram(scan, version); record_new_frame(frame_number, frame_data); } diff --git a/pandatool/src/pstatserver/pStatThreadData.h b/pandatool/src/pstatserver/pStatThreadData.h index f2dce4338d..53364266f0 100644 --- a/pandatool/src/pstatserver/pStatThreadData.h +++ b/pandatool/src/pstatserver/pStatThreadData.h @@ -24,6 +24,7 @@ class PStatCollectorDef; class PStatFrameData; class PStatClientData; +class PStatClientVersion; /** * A collection of FrameData structures for recently-received frames within a @@ -63,7 +64,7 @@ public: void record_new_frame(int frame_number, PStatFrameData *frame_data); void write_datagram(Datagram &dg) const; - void read_datagram(DatagramIterator &scan); + void read_datagram(DatagramIterator &scan, PStatClientVersion *version); private: void compute_elapsed_frames() const;