Fix double-delete crash in libclang/indexing.cpp
david.majnemer at gmail.com
Thu Oct 24 08:26:59 PDT 2013
On Thu, Oct 24, 2013 at 8:10 AM, Olivier J. G. <olivier.jg at gmail.com> wrote:
The code review policy listed at
http://llvm.org/docs/DeveloperPolicy.html#code-reviews suggests waiting a
week before pinging.
> On Wed, Oct 23, 2013 at 6:09 PM, Olivier J. G. <olivier.jg at gmail.com>wrote:
>> While using clang_indexSourceFile(), I found that it crashes faithfully
>> when you give it unsaved files. Upon further inspection I found this is
>> apparently caused by a double-deletion:
>> clang_indexSourceFile_Impl creates llvm::MemoryBuffers with the unsaved
>> file contents and uses MemBufferOwner to manage them.
>> However, it also creates an ASTUnit, which by default takes ownership of
>> the unsaved file buffers. This leads to double deletion of the unsaved file
>> While it's possible to use ASTUnit::setOwnsRemappedFileBuffers(false)
>> here, that would mean that the unsaved file contents are no longer
>> available to the out_TU, which is presumably incorrect.
>> I've attached a (potential) fix.
>> -Olivier JG
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the cfe-commits