[cfe-dev] SourceManger::getBufferData <<INVALID SOURCE LOCATION>>

Adam T. Moody moody20 at llnl.gov
Fri Feb 28 14:06:32 PST 2014


Hello all,
I want to reiterate these questions, since it seems they were missed the 
first time.  I'd appreciate any help.

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,
-Adam


Moody, Adam T. wrote:

>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