Browse Source

pstats: Fix regression: crash when opening session file

rdb 3 years ago
parent
commit
2aa2a35a9f

+ 1 - 1
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 {

+ 1 - 1
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();

+ 2 - 2
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);
   }

+ 2 - 1
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;