dawn created this revision.
dawn added reviewers: abidh, ki.stfu, brucem.
dawn added a subscriber: lldb-commits.
dawn set the repository for this revision to rL LLVM.
This fixes -data-info-line to parse the filename and line correctly when
LineEntry doesn't have the optional column number and the filename contains a
Windows drive letter.
Repository:
rL LLVM
http://reviews.llvm.org/D12115
Files:
tools/lldb-mi/MICmdCmdData.cpp
Index: tools/lldb-mi/MICmdCmdData.cpp
===================================================================
--- tools/lldb-mi/MICmdCmdData.cpp
+++ tools/lldb-mi/MICmdCmdData.cpp
@@ -1754,8 +1754,15 @@
const size_t nFileStartPos = rLine.find_first_not_of(' ',
nEndAddressEndPos + 2);
const size_t nFileOrLineEndPos = rLine.rfind(':');
const size_t nFileOrLineStartPos = rLine.rfind(':',
nFileOrLineEndPos - 1);
- const size_t nFileEndPos = nFileStartPos < nFileOrLineStartPos ?
nFileOrLineStartPos : nFileOrLineEndPos;
- const size_t nFileLen = nFileEndPos - nFileStartPos;
+ size_t nFileEndPos = nFileStartPos < nFileOrLineStartPos ?
nFileOrLineStartPos : nFileOrLineEndPos;
+ size_t nFileLen = nFileEndPos - nFileStartPos;
+ if ((nFileLen == 1) && ((rLine.at(nFileEndPos + 1) == '\\') ||
(rLine.at(nFileEndPos + 1) == '/')))
+ {
+ // The filename contains a Windows drive letter; recalculate
+ // nFileEndPos and nFileLen to account for it.
+ nFileEndPos = nFileOrLineEndPos;
+ nFileLen = nFileEndPos - nFileStartPos;
+ }
const CMIUtilString strFile(rLine.substr(nFileStartPos,
nFileLen).c_str());
const CMICmnMIValueConst miValueConst3(strFile);
const CMICmnMIValueResult miValueResult3("file", miValueConst3);
Index: tools/lldb-mi/MICmdCmdData.cpp
===================================================================
--- tools/lldb-mi/MICmdCmdData.cpp
+++ tools/lldb-mi/MICmdCmdData.cpp
@@ -1754,8 +1754,15 @@
const size_t nFileStartPos = rLine.find_first_not_of(' ', nEndAddressEndPos + 2);
const size_t nFileOrLineEndPos = rLine.rfind(':');
const size_t nFileOrLineStartPos = rLine.rfind(':', nFileOrLineEndPos - 1);
- const size_t nFileEndPos = nFileStartPos < nFileOrLineStartPos ? nFileOrLineStartPos : nFileOrLineEndPos;
- const size_t nFileLen = nFileEndPos - nFileStartPos;
+ size_t nFileEndPos = nFileStartPos < nFileOrLineStartPos ? nFileOrLineStartPos : nFileOrLineEndPos;
+ size_t nFileLen = nFileEndPos - nFileStartPos;
+ if ((nFileLen == 1) && ((rLine.at(nFileEndPos + 1) == '\\') || (rLine.at(nFileEndPos + 1) == '/')))
+ {
+ // The filename contains a Windows drive letter; recalculate
+ // nFileEndPos and nFileLen to account for it.
+ nFileEndPos = nFileOrLineEndPos;
+ nFileLen = nFileEndPos - nFileStartPos;
+ }
const CMIUtilString strFile(rLine.substr(nFileStartPos, nFileLen).c_str());
const CMICmnMIValueConst miValueConst3(strFile);
const CMICmnMIValueResult miValueResult3("file", miValueConst3);
_______________________________________________
lldb-commits mailing list
[email protected]
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits