[cfe-dev] SourceManger::getBufferData <<INVALID SOURCE LOCATION>>
Moody, Adam T.
moody20 at llnl.gov
Sat Feb 15 17:12:11 PST 2014
Hello Clang team,
I'm working with clang version 3.5 (trunk 198970) to create a tool to rewrite some source files. I have two questions:
1) Comments for the getEditBuffer method of the Rewriter class suggest that it will return the current edit buffer for a file or create and return a new buffer if it doesn't already exist. In the case, where no insert / replace calls have been made, I had hoped this method would return the original source, but this doesn't seem to work for me. What is the recommended way to get a buffer containing the original source when no changes have been made to it?
2) When I have not modified the original source, I get a string like "<<<<<INVALID SOURCE LOCATION>>>>>", and in some of those cases, my tool seg faults. I wonder if there is a bug in SourceManager::getBufferData. The aforementioned string is hardcoded in the function (allocated on the stack), and it is used to initialize a StringRef object for the return value. Is the returned StringRef object then referencing a portion of memory that has been popped from the stack?
Thanks for any insight,
-Adam
More information about the cfe-dev
mailing list