Selaa lähdekoodia

PR14284: crash on ext-valid returning NULL from a void function

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167565 91177308-0d34-0410-b5e6-96231b3b80d8
David Blaikie 12 vuotta sitten
vanhempi
commit
e81b43bc30
2 muutettua tiedostoa jossa 4 lisäystä ja 1 poistoa
  1. 2 1
      lib/Sema/SemaChecking.cpp
  2. 2 0
      test/SemaCXX/null_in_arithmetic_ops.cpp

+ 2 - 1
lib/Sema/SemaChecking.cpp

@@ -4799,7 +4799,8 @@ void CheckImplicitConversion(Sema &S, Expr *E, QualType T,
 
   if ((E->isNullPointerConstant(S.Context, Expr::NPC_ValueDependentIsNotNull)
            == Expr::NPCK_GNUNull) && !Target->isAnyPointerType()
-      && !Target->isBlockPointerType() && !Target->isMemberPointerType()) {
+      && !Target->isBlockPointerType() && !Target->isMemberPointerType()
+      && Target->isScalarType()) {
     SourceLocation Loc = E->getSourceRange().getBegin();
     if (Loc.isMacroID())
       Loc = S.SourceMgr.getImmediateExpansionRange(Loc).first;

+ 2 - 0
test/SemaCXX/null_in_arithmetic_ops.cpp

@@ -90,4 +90,6 @@ void f() {
   b = e == NULL || NULL == e || e != NULL || NULL != e;
   b = f == NULL || NULL == f || f != NULL || NULL != f;
   b = "f" == NULL || NULL == "f" || "f" != NULL || NULL != "f";
+
+  return NULL; // expected-error{{void function 'f' should not return a value}}
 }