[cfe-commits] r101717 - /cfe/trunk/lib/Sema/SemaOverload.cpp
Benjamin Kramer
benny.kra at googlemail.com
Sun Apr 18 05:05:54 PDT 2010
Author: d0k
Date: Sun Apr 18 07:05:54 2010
New Revision: 101717
URL: http://llvm.org/viewvc/llvm-project?rev=101717&view=rev
Log:
Bail out early to avoid comparing the internals of two conversion sequences of
different kinds (aka garbage). This happens if we're comparing a standard
conversion sequence to an ambiguous one which have the same KindRank.
Found by valgrind.
Modified:
cfe/trunk/lib/Sema/SemaOverload.cpp
Modified: cfe/trunk/lib/Sema/SemaOverload.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaOverload.cpp?rev=101717&r1=101716&r2=101717&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaOverload.cpp (original)
+++ cfe/trunk/lib/Sema/SemaOverload.cpp Sun Apr 18 07:05:54 2010
@@ -1763,6 +1763,11 @@
else if (ICS2.getKindRank() < ICS1.getKindRank())
return ImplicitConversionSequence::Worse;
+ // The following checks require both conversion sequences to be of
+ // the same kind.
+ if (ICS1.getKind() != ICS2.getKind())
+ return ImplicitConversionSequence::Indistinguishable;
+
// Two implicit conversion sequences of the same form are
// indistinguishable conversion sequences unless one of the
// following rules apply: (C++ 13.3.3.2p3):
More information about the cfe-commits
mailing list