diff --git a/Lib/test/test_module.py b/Lib/test/test_module.py
new file mode 100644
index 0000000..566bb89
--- /dev/null
+++ b/Lib/test/test_module.py
@@ -0,0 +1,48 @@
+# Test the module type
+
+from test_support import verify, vereq, verbose, TestFailed
+
+import sys
+module = type(sys)
+
+# An uninitialized module has no __dict__ or __name__, and __doc__ is None
+foo = module.__new__(module)
+verify(foo.__dict__ is None)
+try:
+    s = foo.__name__
+except AttributeError:
+    pass
+else:
+    raise TestFailed, "__name__ = %s" % repr(s)
+vereq(foo.__doc__, None)
+
+# Regularly initialized module, no docstring
+foo = module("foo")
+vereq(foo.__name__, "foo")
+vereq(foo.__doc__, None)
+vereq(foo.__dict__, {"__name__": "foo", "__doc__": None})
+
+# ASCII docstring
+foo = module("foo", "foodoc")
+vereq(foo.__name__, "foo")
+vereq(foo.__doc__, "foodoc")
+vereq(foo.__dict__, {"__name__": "foo", "__doc__": "foodoc"})
+
+# Unicode docstring
+foo = module("foo", u"foodoc\u1234")
+vereq(foo.__name__, "foo")
+vereq(foo.__doc__, u"foodoc\u1234")
+vereq(foo.__dict__, {"__name__": "foo", "__doc__": u"foodoc\u1234"})
+
+# Reinitialization should not replace the __dict__
+foo.bar = 42
+d = foo.__dict__
+foo.__init__("foo", "foodoc")
+vereq(foo.__name__, "foo")
+vereq(foo.__doc__, "foodoc")
+vereq(foo.bar, 42)
+vereq(foo.__dict__, {"__name__": "foo", "__doc__": "foodoc", "bar": 42})
+verify(foo.__dict__ is d)
+
+if verbose:
+    print "All OK"
diff --git a/Objects/moduleobject.c b/Objects/moduleobject.c
index 807adfa..9cd7f31 100644
--- a/Objects/moduleobject.c
+++ b/Objects/moduleobject.c
@@ -147,10 +147,23 @@
 /* Methods */
 
 static int
-module_init(PyModuleObject *m, PyObject *args, PyObject *kw)
+module_init(PyModuleObject *m, PyObject *args, PyObject *kwds)
 {
-	m->md_dict = PyDict_New();
-	if (m->md_dict == NULL)
+	static char *kwlist[] = {"name", "doc", NULL};
+	PyObject *dict, *name = Py_None, *doc = Py_None;
+	if (!PyArg_ParseTupleAndKeywords(args, kwds, "S|O", kwlist,
+					 &name, &doc))
+		return -1;
+	dict = m->md_dict;
+	if (dict == NULL) {
+		dict = PyDict_New();
+		if (dict == NULL)
+			return -1;
+		m->md_dict = dict;
+	}
+	if (PyDict_SetItemString(dict, "__name__", name) < 0)
+		return -1;
+	if (PyDict_SetItemString(dict, "__doc__", doc) < 0)
 		return -1;
 	return 0;
 }
