<div dir="ltr">Rather than all of this ugly error-prone code, can we instead use llvm::sys::fs::root_name to check whether the path contains a drive letter?</div><br><div class="gmail_quote"><div dir="ltr">On Tue, Aug 18, 2015 at 1:52 PM Dawn Perchik via lldb-commits <<a href="mailto:lldb-commits@lists.llvm.org">lldb-commits@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">dawn created this revision.<br>
dawn added reviewers: abidh, ki.stfu, brucem.<br>
dawn added a subscriber: lldb-commits.<br>
dawn set the repository for this revision to rL LLVM.<br>
<br>
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.<br>
<br>
Repository:<br>
rL LLVM<br>
<br>
<a href="http://reviews.llvm.org/D12115" rel="noreferrer" target="_blank">http://reviews.llvm.org/D12115</a><br>
<br>
Files:<br>
tools/lldb-mi/MICmdCmdData.cpp<br>
<br>
Index: tools/lldb-mi/MICmdCmdData.cpp<br>
===================================================================<br>
--- tools/lldb-mi/MICmdCmdData.cpp<br>
+++ tools/lldb-mi/MICmdCmdData.cpp<br>
@@ -1754,8 +1754,15 @@<br>
const size_t nFileStartPos = rLine.find_first_not_of(' ', nEndAddressEndPos + 2);<br>
const size_t nFileOrLineEndPos = rLine.rfind(':');<br>
const size_t nFileOrLineStartPos = rLine.rfind(':', nFileOrLineEndPos - 1);<br>
- const size_t nFileEndPos = nFileStartPos < nFileOrLineStartPos ? nFileOrLineStartPos : nFileOrLineEndPos;<br>
- const size_t nFileLen = nFileEndPos - nFileStartPos;<br>
+ size_t nFileEndPos = nFileStartPos < nFileOrLineStartPos ? nFileOrLineStartPos : nFileOrLineEndPos;<br>
+ size_t nFileLen = nFileEndPos - nFileStartPos;<br>
+ if ((nFileLen == 1) && ((rLine.at(nFileEndPos + 1) == '\\') || (rLine.at(nFileEndPos + 1) == '/')))<br>
+ {<br>
+ // The filename contains a Windows drive letter; recalculate<br>
+ // nFileEndPos and nFileLen to account for it.<br>
+ nFileEndPos = nFileOrLineEndPos;<br>
+ nFileLen = nFileEndPos - nFileStartPos;<br>
+ }<br>
const CMIUtilString strFile(rLine.substr(nFileStartPos, nFileLen).c_str());<br>
const CMICmnMIValueConst miValueConst3(strFile);<br>
const CMICmnMIValueResult miValueResult3("file", miValueConst3);<br>
<br>
<br>
_______________________________________________<br>
lldb-commits mailing list<br>
<a href="mailto:lldb-commits@lists.llvm.org" target="_blank">lldb-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits</a><br>
</blockquote></div>