diff --git a/Objects/frameobject.c b/Objects/frameobject.c
index fcf25fd..4a01f3d 100644
--- a/Objects/frameobject.c
+++ b/Objects/frameobject.c
@@ -36,9 +36,7 @@
 };
 
 static PyObject *
-frame_getattr(f, name)
-	PyFrameObject *f;
-	char *name;
+frame_getattr(PyFrameObject *f, char *name)
 {
 	if (strcmp(name, "f_locals") == 0)
 		PyFrame_FastToLocals(f);
@@ -46,10 +44,7 @@
 }
 
 static int
-frame_setattr(f, name, value)
-	PyFrameObject *f;
-	char *name;
-	PyObject *value;
+frame_setattr(PyFrameObject *f, char *name, PyObject *value)
 {
 	return PyMember_Set((char *)f, frame_memberlist, name, value);
 }
@@ -76,8 +71,7 @@
 static PyFrameObject *free_list = NULL;
 
 static void
-frame_dealloc(f)
-	PyFrameObject *f;
+frame_dealloc(PyFrameObject *f)
 {
 	int i;
 	PyObject **fastlocals;
@@ -121,11 +115,8 @@
 };
 
 PyFrameObject *
-PyFrame_New(tstate, code, globals, locals)
-	PyThreadState *tstate;
-	PyCodeObject *code;
-	PyObject *globals;
-	PyObject *locals;
+PyFrame_New(PyThreadState *tstate, PyCodeObject *code,
+            PyObject *globals, PyObject *locals)
 {
 	PyFrameObject *back = tstate->frame;
 	static PyObject *builtin_object;
@@ -238,11 +229,7 @@
 /* Block management */
 
 void
-PyFrame_BlockSetup(f, type, handler, level)
-	PyFrameObject *f;
-	int type;
-	int handler;
-	int level;
+PyFrame_BlockSetup(PyFrameObject *f, int type, int handler, int level)
 {
 	PyTryBlock *b;
 	if (f->f_iblock >= CO_MAXBLOCKS)
@@ -254,8 +241,7 @@
 }
 
 PyTryBlock *
-PyFrame_BlockPop(f)
-	PyFrameObject *f;
+PyFrame_BlockPop(PyFrameObject *f)
 {
 	PyTryBlock *b;
 	if (f->f_iblock <= 0)
@@ -267,8 +253,7 @@
 /* Convert between "fast" version of locals and dictionary version */
 
 void
-PyFrame_FastToLocals(f)
-	PyFrameObject *f;
+PyFrame_FastToLocals(PyFrameObject *f)
 {
 	/* Merge fast locals into f->f_locals */
 	PyObject *locals, *map;
@@ -312,9 +297,7 @@
 }
 
 void
-PyFrame_LocalsToFast(f, clear)
-	PyFrameObject *f;
-	int clear;
+PyFrame_LocalsToFast(PyFrameObject *f, int clear)
 {
 	/* Merge f->f_locals into fast locals */
 	PyObject *locals, *map;
@@ -349,7 +332,7 @@
 /* Clear out the free list */
 
 void
-PyFrame_Fini()
+PyFrame_Fini(void)
 {
 	while (free_list != NULL) {
 		PyFrameObject *f = free_list;
