summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaDeclAttr.cpp
diff options
context:
space:
mode:
authorSebastian Redl <sebastian.redl@getdesigned.at>2009-11-17 18:02:24 +0000
committerSebastian Redl <sebastian.redl@getdesigned.at>2009-11-17 18:02:24 +0000
commit6eedcc1b86a10b2690803fe5e0d134aa7e3df5a8 (patch)
tree44b15d47a770830190389749a7bd766daa1a5099 /clang/lib/Sema/SemaDeclAttr.cpp
parent8ce3321eb68bfc43564e863d4e030524ec7ecc68 (diff)
downloadbcm5719-llvm-6eedcc1b86a10b2690803fe5e0d134aa7e3df5a8.tar.gz
bcm5719-llvm-6eedcc1b86a10b2690803fe5e0d134aa7e3df5a8.zip
Adjust format attribute index for implicit object arguments. Fixes PR5521.
llvm-svn: 89113
Diffstat (limited to 'clang/lib/Sema/SemaDeclAttr.cpp')
-rw-r--r--clang/lib/Sema/SemaDeclAttr.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/clang/lib/Sema/SemaDeclAttr.cpp b/clang/lib/Sema/SemaDeclAttr.cpp
index 803be138c26..e7ea43be021 100644
--- a/clang/lib/Sema/SemaDeclAttr.cpp
+++ b/clang/lib/Sema/SemaDeclAttr.cpp
@@ -1351,7 +1351,14 @@ static void HandleFormatAttr(Decl *d, const AttributeList &Attr, Sema &S) {
// FIXME: Do we need to bounds check?
unsigned ArgIdx = Idx.getZExtValue() - 1;
- if (HasImplicitThisParam) ArgIdx--;
+ if (HasImplicitThisParam) {
+ if (ArgIdx == 0) {
+ S.Diag(Attr.getLoc(), diag::err_format_attribute_not)
+ << "a string type" << IdxExpr->getSourceRange();
+ return;
+ }
+ ArgIdx--;
+ }
// make sure the format string is really a string
QualType Ty = getFunctionOrMethodArgType(d, ArgIdx);
OpenPOWER on IntegriCloud