Fix crash declaring global allocation function with zero parameters. Fixes PR19968!
authorNick Lewycky <nicholas@mxc.ca>
Sat, 7 Jun 2014 00:43:57 +0000 (00:43 +0000)
committerNick Lewycky <nicholas@mxc.ca>
Sat, 7 Jun 2014 00:43:57 +0000 (00:43 +0000)
llvm-svn: 210388

clang/lib/AST/Decl.cpp
clang/test/SemaCXX/new-delete.cpp

index 8947072..7234d4c 100644 (file)
@@ -2348,7 +2348,7 @@ bool FunctionDecl::isReplaceableGlobalAllocationFunction() const {
     return false;
 
   const FunctionProtoType *FPT = getType()->castAs<FunctionProtoType>();
-  if (FPT->getNumParams() > 2 || FPT->isVariadic())
+  if (FPT->getNumParams() == 0 || FPT->getNumParams() > 2 || FPT->isVariadic())
     return false;
 
   // If this is a single-parameter function, it must be a replaceable global
index 175ebe7..cb43458 100644 (file)
@@ -521,3 +521,6 @@ class DeletingPlaceholder {
 namespace PR18544 {
   inline void *operator new(size_t); // expected-error {{'operator new' cannot be declared inside a namespace}}
 }
+
+// PR19968
+inline void* operator new(); // expected-error {{'operator new' must have at least one parameter}}