[Python-3000-checkins] r59995 - python/branches/py3k-importhook/Python/import.c

christian.heimes python-3000-checkins at python.org
Wed Jan 16 04:44:58 CET 2008


Author: christian.heimes
Date: Wed Jan 16 04:44:58 2008
New Revision: 59995

Modified:
   python/branches/py3k-importhook/Python/import.c
Log:
Removed some unused code and added error checks to Get/SetNotified

Modified: python/branches/py3k-importhook/Python/import.c
==============================================================================
--- python/branches/py3k-importhook/Python/import.c	(original)
+++ python/branches/py3k-importhook/Python/import.c	Wed Jan 16 04:44:58 2008
@@ -111,16 +111,6 @@
 	{0, 0}
 };
 
-#if 0
-/* Queue for the post import hook system */
-static PyObject *register_queue = NULL;
-static int notification_in_progress = 0;
-
-static int queue_registration(PyObject *, PyObject *);
-static int process_registration_queue(void);
-#endif
-
-
 /* Initialize things */
 
 void
@@ -251,7 +241,6 @@
 _PyImport_Fini(void)
 {
 	Py_CLEAR(extensions);
-	/* Py_CLEAR(register_queue); */
 	PyMem_DEL(_PyImport_Filetab);
 	_PyImport_Filetab = NULL;
 }
@@ -745,7 +734,6 @@
 	if ((it = PyObject_GetIter(hooks)) == NULL) {
 		goto error;
 	}
-	//notification_in_progress = 1;
 	PyModule_SetNotified(module, 1);
 	while ((hook = PyIter_Next(it)) != NULL) {
 		o = PyObject_CallFunctionObjArgs(hook, module, NULL);
@@ -765,13 +753,6 @@
 	if (PyDict_SetItem(registry, mod_name, Py_None) < 0) {
 		status = -1;
 	}
-#if 0
-	notification_in_progress = 0;
-	/* register queued hooks */
-	if (process_registration_queue()) {
-		goto removehooks;
-	}
-#endif
     error:
 	Py_XDECREF(mod_name);
 	Py_XDECREF(it);
@@ -800,21 +781,19 @@
 {
 	PyObject *modules, *mod = NULL;
 	int status = -1;
-	const char *pmodname = modname, *dot;
+	const char *dot;
 	char name[MAXPATHLEN+1];
-	Py_ssize_t pos;
+	int pos, rc;
 
 	modules = PyImport_GetModuleDict();
 	if (modules == NULL) {
 		goto error;
 	}
 
-	//fprintf(stderr, "%s\n", modname);
 	if ((dot = strrchr(modname, '.')) != NULL) {
 		pos = dot-modname;
 		strncpy(name, modname, pos);
 		name[pos] = '\0';
-		//fprintf(stderr, "%s (%s at %d)\n", name, modname, pos);
 		if ((mod = PyDict_GetItemString(modules, name)) == NULL) {
 			PyErr_Format(PyExc_KeyError,
 				"Module '%.200s' is not in sys.modules",
@@ -822,10 +801,15 @@
 				);
 			goto error;
 		}
-		if (PyModule_GetNotified(mod)) { // ERRCHECK
+		if ((rc = PyModule_GetNotified(mod)) == -1) {
+			goto error;
+		}
+		if (rc) {
 			return mod;
 		}
-		PyModule_SetNotified(mod, 1); // ERRCHECK
+		if (PyModule_SetNotified(mod, 1) == -1) {
+			goto error;
+		}
 		mod = PyImport_NotifyLoadedByName(name);
 	}
 	if ((mod = PyDict_GetItemString(modules, modname)) == NULL) {
@@ -842,7 +826,6 @@
 
 	status = 0;
     error:
-	/*notification_in_progress = 0;*/
 	if (status == 0) {
 		return mod;
 	}
@@ -869,15 +852,6 @@
 		goto error;
 	}
 
-#if 0
-	if (notification_in_progress) {
-		if (queue_registration(callable, mod_name) != 0) {
-			return NULL;
-		}
-		Py_RETURN_NONE;
-	}
-#endif
-
 	registry = PyImport_GetPostImportHooks();
 	modules = PyImport_GetModuleDict();
 	if (registry == NULL || modules == NULL) {
@@ -951,83 +925,6 @@
 	}
 }
 
-#if 0
-static int
-queue_registration(PyObject *callable, PyObject *mod_name)
-{
-	
-	PyObject *tup;
-
-	if (register_queue == NULL) {
-		register_queue = PyList_New(0);
-		if (register_queue == NULL)
-			return -1;
-	}
-	assert(notification_in_progress);
-	tup = PyTuple_New(2);
-	if (tup == NULL) {
-		return -1;
-	}
-	Py_INCREF(callable);
-	Py_INCREF(mod_name);
-	PyTuple_SetItem(tup, 0, callable);
-	PyTuple_SetItem(tup, 1, mod_name);
-	if (PyList_Append(register_queue, tup)) {
-		Py_DECREF(tup);
-		return -1;
-	}
-	Py_DECREF(tup);
-	return 0;
-}
-
-static int
-process_registration_queue(void)
-{
-	PyObject *modules;
-	PyObject *mod_name, *hook, *module, *o;
-	PyObject *it = NULL, *tup = NULL;
-	int rc = -1;
-
-	if (notification_in_progress)
-		return 0;
-
-	if (register_queue == NULL || PyList_Size(register_queue) == 0) {
-		return 0;
-	}
-
-	if ((modules = PyImport_GetModuleDict()) == NULL) {
-		goto error;
-	}
-
-	while (Py_SIZE(register_queue)) {
-		tup = PyObject_CallMethod(register_queue, "pop", "i", 0);
-		if ((hook = PyTuple_GetItem(tup, 0)) == NULL) {
-			goto error;
-		}
-		if ((mod_name = PyTuple_GetItem(tup, 1)) == NULL) {
-			goto error;
-		}
-		if ((module = PyDict_GetItem(modules, mod_name)) == NULL) {
-			goto error;
-		}
-		o = PyImport_RegisterPostImportHook(hook, mod_name);
-		if (o == NULL) {
-			goto error;
-		}
-		Py_DECREF(o);
-		Py_CLEAR(tup);
-	}
-	if (PyErr_Occurred()) {
-		goto error;
-	}
-
-	rc = 0;
-    error:
-	Py_XDECREF(it);
-	Py_XDECREF(tup);
-	return rc;
-}
-#endif
 /* end of post import hook */
 
 static PyObject * get_sourcefile(const char *file);


More information about the Python-3000-checkins mailing list