From 844c34513d400831f491072b57ed9c62721309e6 Mon Sep 17 00:00:00 2001 From: Kai Koehne Date: Fri, 25 Feb 2011 11:30:35 +0100 Subject: [PATCH] QmlJSDebugger: Compare only file names for .js breakpoints The file names on device might be completely different, therefore we cannot compare the absolute path. Reviewed-by: Christiaan Janssen --- .../qml/qmljsdebugger/jsdebuggeragent.cpp | 26 ++++++++++++++----- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/share/qtcreator/qml/qmljsdebugger/jsdebuggeragent.cpp b/share/qtcreator/qml/qmljsdebugger/jsdebuggeragent.cpp index 42fec936b5b..3c200d797d7 100644 --- a/share/qtcreator/qml/qmljsdebugger/jsdebuggeragent.cpp +++ b/share/qtcreator/qml/qmljsdebugger/jsdebuggeragent.cpp @@ -44,9 +44,10 @@ #include #include -#include #include #include +#include +#include #include #include #include @@ -144,6 +145,8 @@ public: QEventLoop loop; QHash filenames; JSAgentBreakpoints breakpoints; + // breakpoints by filename (without path) + QHash fileNameToBreakpoints; QStringList watchExpressions; QSet knownObjectIds; }; @@ -387,12 +390,15 @@ void JSDebuggerAgentPrivate::positionChange(qint64 scriptId, int lineNumber, int QPair key = qMakePair(filename, lineNumber); it = filenames.insert(scriptId, filename); } - JSAgentBreakpointData bp; - bp.fileName = it->toUtf8(); - bp.lineNumber = lineNumber; - if (breakpoints.contains(bp)) { - stopped(); - return; + + const QString filePath = it->toUtf8(); + JSAgentBreakpoints bps = fileNameToBreakpoints.values(QFileInfo(filePath).fileName()).toSet(); + + foreach (const JSAgentBreakpointData &bp, bps) { + if (bp.lineNumber == lineNumber) { + stopped(); + return; + } } } @@ -468,6 +474,12 @@ void JSDebuggerAgentPrivate::messageReceived(const QByteArray &message) ds >> command; if (command == "BREAKPOINTS") { ds >> breakpoints; + + fileNameToBreakpoints.clear(); + foreach (const JSAgentBreakpointData &bp, breakpoints) { + fileNameToBreakpoints.insert(QFileInfo(bp.fileName).fileName(), bp); + } + //qDebug() << "BREAKPOINTS"; //foreach (const JSAgentBreakpointData &bp, breakpoints) // qDebug() << "BREAKPOINT: " << bp.fileName << bp.lineNumber;