]> git.cworth.org Git - apitrace/commitdiff
Make sure we reset the state when loading another trace file
authorZack Rusin <zack@kde.org>
Sat, 24 Sep 2011 17:42:53 +0000 (13:42 -0400)
committerZack Rusin <zack@kde.org>
Sat, 24 Sep 2011 17:44:07 +0000 (13:44 -0400)
fixes issue #41

common/trace_parser.cpp
gui/apitrace.cpp
gui/traceloader.cpp
gui/traceloader.h

index a72857700ed40aef073eece9b21a75b6106c4c2b..2eff0cda90bda893c9bbcf64e68c8c23158deff3 100644 (file)
@@ -148,6 +148,8 @@ void Parser::close(void) {
         }
     }
     bitmasks.clear();
+
+    next_call_no = 0;
 }
 
 
index bc862097099c75c0d48ce1a093ba3aff70711866..edf98b9eb85e33985c1fb9be53151e67db2f6d51 100644 (file)
@@ -148,10 +148,12 @@ void ApiTrace::setFileName(const QString &name)
 {
     if (m_fileName != name) {
         m_fileName = name;
+        m_tempFileName = QString();
 
         m_frames.clear();
         m_errors.clear();
         m_editedCalls.clear();
+        m_queuedErrors.clear();
         m_needsSaving = false;
         emit invalidated();
 
index 0fee815ff6a811bbac9a58e9099453de6aa71fa5..cf9b37bb4f9485d292f854469e9daf3aa6733886 100644 (file)
@@ -38,6 +38,16 @@ void TraceLoader::loadTrace(const QString &filename)
         loadHelpFile();
     }
 
+    if (!m_frameBookmarks.isEmpty()) {
+        qDeleteAll(m_signatures);
+        qDeleteAll(m_enumSignatures);
+        m_signatures.clear();
+        m_enumSignatures.clear();
+        m_frameBookmarks.clear();
+        m_createdFrames.clear();
+        m_parser.close();
+    }
+
     if (!m_parser.open(filename.toLatin1())) {
         qDebug() << "error: failed to open " << filename;
         return;
@@ -51,7 +61,6 @@ void TraceLoader::loadTrace(const QString &filename)
         //Load the entire file into memory
         parseTrace();
     }
-
     emit finishedParsing();
 }
 
index 4b88ec605041527e2c9464e1aabbc9ee9cd484da..e950b0914bf73b0e81671ec1db4d58cb561d7b40 100644 (file)
@@ -85,7 +85,6 @@ private:
 
 private:
     Trace::Parser m_parser;
-    QString m_fileName;
     ApiTrace::FrameMarker m_frameMarker;
 
     typedef QMap<int, FrameBookmark> FrameBookmarks;