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?

On Tue, Aug 18, 2015 at 1:52 PM Dawn Perchik via lldb-commits <
lldb-commits@lists.llvm.org> wrote:

> 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);
>
>
> _______________________________________________
> lldb-commits mailing list
> lldb-commits@lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
>
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to