Index: lib/Parse/ParseExpr.cpp
===================================================================
--- lib/Parse/ParseExpr.cpp	(revision 276878)
+++ lib/Parse/ParseExpr.cpp	(working copy)
@@ -453,6 +453,10 @@
         LHS = Actions.ActOnConditionalOp(OpToken.getLocation(), ColonLoc,
                                          LHS.get(), TernaryMiddle.get(),
                                          RHS.get());
+        // In this case, ActOnConditionalOp performed the 
+        // CorrectDelayedTyposInExpr check.
+        if (!getLangOpts().CPlusPlus)
+          continue;
       }
     }
     // Ensure potential typos aren't left undiagnosed.
Index: test/SemaCXX/typo-correction-crash.c
===================================================================
--- test/SemaCXX/typo-correction-crash.c	(nonexistent)
+++ test/SemaCXX/typo-correction-crash.c	(working copy)
@@ -0,0 +1,18 @@
+// Two typos in a parenthesized expression or argument list
+// with a conditional expression caused a crash in C mode.
+//
+// r272587 fixed a similar bug for binary operations.
+// The same fix was needed for conditional expressions.
+//
+// RUN: %clang_cc1 -verify -fsyntax-only %s
+
+int f(int x, int y) {
+  return x + y;
+}
+
+int g() {
+ f(x, 5 ? z : 0); // expected-error {{use of undeclared identifier}} \
+                  // expected-error {{use of undeclared identifier}}
+ (x, 5 ? z : 0);  // expected-error {{use of undeclared identifier}} \
+                  // expected-error {{use of undeclared identifier}}
+}
