summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2010-04-07 00:27:13 +0000
committerTed Kremenek <kremenek@apple.com>2010-04-07 00:27:13 +0000
commit6ca136a77fe1a4769f458afa0c5dd663f1a531f1 (patch)
treeba0e6c3934414e08c473534777741b209f396327 /clang
parentea7a13377571dd6ca5484ebee8258197afd76440 (diff)
downloadbcm5719-llvm-6ca136a77fe1a4769f458afa0c5dd663f1a531f1.tar.gz
bcm5719-llvm-6ca136a77fe1a4769f458afa0c5dd663f1a531f1.zip
Fix CIndex crash on invalid code reported in <rdar://problem/7833619>.
llvm-svn: 100589
Diffstat (limited to 'clang')
-rw-r--r--clang/test/Index/invalid-code-rdar_7833619.m4
-rw-r--r--clang/tools/CIndex/CIndex.cpp5
2 files changed, 7 insertions, 2 deletions
diff --git a/clang/test/Index/invalid-code-rdar_7833619.m b/clang/test/Index/invalid-code-rdar_7833619.m
new file mode 100644
index 00000000000..0034539ad10
--- /dev/null
+++ b/clang/test/Index/invalid-code-rdar_7833619.m
@@ -0,0 +1,4 @@
+// RUN: c-index-test -test-load-source all %s
+// All we care about in this test is that it doesn't crash.
+typedef r7833619_a (*r7833619_b)(r7833619_c *r7833619_d, r7833619_c *r7833619_e);
+
diff --git a/clang/tools/CIndex/CIndex.cpp b/clang/tools/CIndex/CIndex.cpp
index 01130e22773..7a8c78eceae 100644
--- a/clang/tools/CIndex/CIndex.cpp
+++ b/clang/tools/CIndex/CIndex.cpp
@@ -814,8 +814,9 @@ bool CursorVisitor::VisitFunctionTypeLoc(FunctionTypeLoc TL) {
return true;
for (unsigned I = 0, N = TL.getNumArgs(); I != N; ++I)
- if (Visit(MakeCXCursor(TL.getArg(I), TU)))
- return true;
+ if (Decl *D = TL.getArg(I))
+ if (Visit(MakeCXCursor(D, TU)))
+ return true;
return false;
}
OpenPOWER on IntegriCloud