Hmm yea, I'm not sure why I wrote replace().   SmallString::slice() might be what you want.  It returns a StringRef.  As long as your program is only operating on String objects (StringRef, SmallVectorImpl, std::string), you never have to worry.  But if you pass to a function taking a const char* you need to make ConstString out of it first so it is internalized <br><div class="gmail_quote">On Thu, Feb 26, 2015 at 8:46 AM Ilia K <<a href="mailto:ki.stfu@gmail.com">ki.stfu@gmail.com</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">@zturner, one question about SmallString<br>
<br>
<br>
================<br>
Comment at: source/Host/macosx/<u></u>HostInfoMacOSX.mm:137<br>
@@ -136,3 +136,3 @@<br>
         return false;<br>
     char raw_path[PATH_MAX];<br>
     lldb_file_spec.GetPath(raw_<u></u>path, sizeof(raw_path));<br>
----------------<br>
clayborg wrote:<br>
> zturner wrote:<br>
> > Bonus points if you can get rid of all the c string manipulation in this function and write everything in terms of llvm::SmallString<> and llvm::StringRef.  the basic idea is this:<br>
> ><br>
> > 1) Replace the stack buffer with an llvm::SmallString<PATH_MAX>.<br>
> > 2) use SmallString<>::find() instead of strstr<br>
> > 3) Construct a StringRef() with an explicit length instead of inserting a null terminator<br>
> > 4) Use SmallString<>::replace() instead of strncpy<br>
> > 5) use the file_spec.GetDirectory().<u></u>SetString(StringRef) instead of file_spec.GetDirectory().<u></u>SetCString(const char*)<br>
> ><br>
> > The same improvement could be made to the rest of the functions in this file.<br>
> I would prefer to use std::string instead of llvm::SmallString.<br>
>RE: 4. Use SmallString<>::replace() instead of strncpy<br>
The replace() is absent. What I can use instead of it?<br>
<br>
<a href="http://reviews.llvm.org/D7553" target="_blank">http://reviews.llvm.org/D7553</a><br>
<br>
EMAIL PREFERENCES<br>
  <a href="http://reviews.llvm.org/settings/panel/emailpreferences/" target="_blank">http://reviews.llvm.org/<u></u>settings/panel/<u></u>emailpreferences/</a><br>
<br>
<br>
</blockquote></div>