[cfe-commits] [Patch] Fix crasher during failed template deduction of derived class

Richard Trieu rtrieu at google.com
Fri Nov 2 13:50:33 PDT 2012


On Tue, Oct 9, 2012 at 5:05 PM, Richard Trieu <rtrieu at google.com> wrote:

> On Tue, Oct 9, 2012 at 5:04 PM, Richard Trieu <rtrieu at google.com> wrote:
>
>> The following code causes a crash:
>>
>> template<typename T> class vector2 {};
>> template<typename T> class vector : vector2<T> {};
>>
>> template<typename T> void Foo(vector<const T*> V) {}
>>
>> void test() {
>>   Foo(vector<int*>());
>> }
>>
>> Once template deduction fails in vector, it tries again with with the
>> base class vector2 and also fails, but with a different status.  However,
>> the TemplateDeductionInfo is updated, but the old status is kept.  This
>> leads to an assert later when the diagnostic is produced.  This patch
>> introduces a temporary TemplateDeductionInfo to capture the information
>> from the base class template deduction, and only overrides the old info if
>> the template deduction is successful.
>>
>
> Oops.  And here's the patch.
>

Ping.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20121102/b0106dcb/attachment.html>


More information about the cfe-commits mailing list