different init for __builtins__
diff --git a/Objects/frameobject.c b/Objects/frameobject.c
index 52b4e52..beb4c2d 100644
--- a/Objects/frameobject.c
+++ b/Objects/frameobject.c
@@ -149,6 +149,8 @@
 		return NULL;
 	}
 	builtins = dictlookup(globals, "__builtins__");
+	if (builtins != NULL && is_moduleobject(builtins))
+		builtins = getmoduledict(builtins);
 	if (builtins == NULL || !is_mappingobject(builtins)) {
 		err_setstr(TypeError, "bad __builtins__ dictionary");
 		return NULL;