SF bug #733667: kwargs handled incorrectly

The fast_function() inlining optimization only
applies when there are zero keyword arguments.
diff --git a/Lib/test/test_extcall.py b/Lib/test/test_extcall.py
index d3c2e3f..f85baf8 100644
--- a/Lib/test/test_extcall.py
+++ b/Lib/test/test_extcall.py
@@ -1,6 +1,9 @@
 from test.test_support import verify, verbose, TestFailed, sortdict
 from UserList import UserList
 
+def e(a, b):
+    print a, b
+
 def f(*a, **k):
     print a, sortdict(k)
 
@@ -22,6 +25,14 @@
 f(1, 2, 3, *(4, 5), **{'a':6, 'b':7})
 f(1, 2, 3, x=4, y=5, *(6, 7), **{'a':8, 'b':9})
 
+# Verify clearing of SF bug #733667
+try:
+    e(c=3)
+except TypeError:
+    pass
+else:
+    print "should raise TypeError: e() got an unexpected keyword argument 'c'"
+
 try:
     g()
 except TypeError, err:
diff --git a/Python/ceval.c b/Python/ceval.c
index 85e9e6b..c652b07 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -3468,7 +3468,7 @@
 
 	PCALL(PCALL_FUNCTION);
 	PCALL(PCALL_FAST_FUNCTION);
-	if (argdefs == NULL && co->co_argcount == n && 
+	if (argdefs == NULL && co->co_argcount == n && nk==0 &&
 	    co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) {
 		PyFrameObject *f;
 		PyObject *retval = NULL;