Index: Modules/dbmmodule.c =================================================================== --- Modules/dbmmodule.c (revision 71461) +++ Modules/dbmmodule.c (working copy) @@ -336,6 +336,25 @@ return Py_FindMethod(dbm_methods, (PyObject *)dp, name); } +static PyObject * +dbm_iternext(dbmobject *dp) +{ + datum key; + + check_dbmobject_open(dp); + key = dbm_nextkey(dp->di_dbm); + if (dbm_error(dp->di_dbm)) { + dbm_clearerr(dp->di_dbm); + PyErr_SetString(DbmError, ""); + return NULL; + } + if (key.dptr == NULL) { + PyErr_SetNone(PyExc_StopIteration); + return NULL; + } + return PyString_FromStringAndSize(key.dptr, key.dsize); +} + static PyTypeObject Dbmtype = { PyVarObject_HEAD_INIT(NULL, 0) "dbm.dbm", @@ -357,6 +376,13 @@ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT, /*tp_xxx4*/ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + PyObject_SelfIter, /* tp_iter */ + (iternextfunc)dbm_iternext, /* tp_iternext */ }; /* ----------------------------------------------------------------- */