diff --git a/Doc/api/api.tex b/Doc/api/api.tex
index d2e6a44..d67085a 100644
--- a/Doc/api/api.tex
+++ b/Doc/api/api.tex
@@ -2081,6 +2081,10 @@
 Returns a new empty dictionary.
 \end{cfuncdesc}
 
+\begin{cfuncdesc}{PyObject*}{PyDict_Copy}{PyObject *p}
+Returns a new dictionary that contains the same key/value pairs as p.
+\end{cfuncdesc}
+
 \begin{cfuncdesc}{void}{PyDict_Clear}{PyDictObject *p}
 Empties an existing dictionary of all key/value pairs.
 \end{cfuncdesc}
diff --git a/Doc/api/refcounts.dat b/Doc/api/refcounts.dat
index 3114e96..53eb006 100644
--- a/Doc/api/refcounts.dat
+++ b/Doc/api/refcounts.dat
@@ -1,4 +1,4 @@
-# Created by kip Montanaro <skip@mojam.com>.
+# Created by Skip Montanaro <skip@mojam.com>.
 
 # Format:
 #	function ':' type ':' [param name] ':' [refcount effect] ':' [comment]
@@ -88,6 +88,9 @@
 
 PyDict_New:PyObject*::+1:
 
+PyDict_Copy:PyObject*::+1:
+PyDict_Copy:PyObject*:p:0:
+
 PyDict_Next:int:::
 PyDict_Next:PyDictObject*:p:0:
 PyDict_Next:int:ppos::
diff --git a/Include/dictobject.h b/Include/dictobject.h
index 1f1fdde..acffb41 100644
--- a/Include/dictobject.h
+++ b/Include/dictobject.h
@@ -52,6 +52,8 @@
 extern DL_IMPORT(PyObject *) PyDict_Values Py_PROTO((PyObject *mp));
 extern DL_IMPORT(PyObject *) PyDict_Items Py_PROTO((PyObject *mp));
 extern DL_IMPORT(int) PyDict_Size Py_PROTO((PyObject *mp));
+extern DL_IMPORT(PyObject *) PyDict_Copy Py_PROTO((PyObject *mp));
+
 
 extern DL_IMPORT(PyObject *) PyDict_GetItemString Py_PROTO((PyObject *dp, char *key));
 extern DL_IMPORT(int) PyDict_SetItemString Py_PROTO((PyObject *dp, char *key, PyObject *item));
diff --git a/Objects/dictobject.c b/Objects/dictobject.c
index ea32e23..beab457 100644
--- a/Objects/dictobject.c
+++ b/Objects/dictobject.c
@@ -738,11 +738,25 @@
       register dictobject *mp;
       PyObject *args;
 {
+	if (!PyArg_Parse(args, ""))
+		return NULL;
+	return PyDict_Copy((PyObject*)mp);
+}
+
+PyObject *
+PyDict_Copy(o)
+	PyObject *o;
+{
+	register dictobject *mp;
 	register int i;
 	dictobject *copy;
         dictentry *entry;
-	if (!PyArg_Parse(args, ""))
+
+	if (o == NULL || !PyDict_Check(o)) {
+		PyErr_BadInternalCall();
 		return NULL;
+	}
+	mp = (dictobject *)o;
 	copy = (dictobject *)PyDict_New();
 	if (copy == NULL)
 		return NULL;
