Cleanup from patch #683257:
Add missing INCREFs and re-indent returns to be consistent.
Add \n\ for lines in docstring
Add a pathetic test
Add docs
diff --git a/Doc/lib/libimp.tex b/Doc/lib/libimp.tex
index 150f5b4..31368f4 100644
--- a/Doc/lib/libimp.tex
+++ b/Doc/lib/libimp.tex
@@ -106,6 +106,19 @@
triggered by that).
\end{funcdesc}
+\begin{funcdesc}{acquire_lock}{}
+Acquires the interpreter's import lock for the current thread. This lock
+should be used by import hooks to ensure thread-safety when importing modules.
+On platforms without threads, this function does nothing.
+\versionadded{2.3}
+\end{funcdesc}
+
+\begin{funcdesc}{release_lock}{}
+Release the interpreter's import lock.
+On platforms without threads, this function does nothing.
+\versionadded{2.3}
+\end{funcdesc}
+
The following constants with integer values, defined in this module,
are used to indicate the search result of \function{find_module()}.
diff --git a/Lib/test/test_imp.py b/Lib/test/test_imp.py
new file mode 100644
index 0000000..ebecf82
--- /dev/null
+++ b/Lib/test/test_imp.py
@@ -0,0 +1,26 @@
+
+import imp
+import unittest
+from test_support import TestFailed
+
+class ImpLock(unittest.TestCase):
+
+ # XXX this test is woefully inadequate, please fix me
+ def testLock(self):
+ LOOPS = 50
+ for i in range(LOOPS):
+ imp.acquire_lock()
+ for i in range(LOOPS):
+ imp.release_lock()
+
+ for i in range(LOOPS):
+ try:
+ imp.release_lock()
+ except RuntimeError:
+ pass
+ else:
+ raise TestFailed, \
+ "release_lock() without lock should raise RuntimeError"
+
+if __name__ == "__main__":
+ test_support.run_unittest(ImpLock)
diff --git a/Python/import.c b/Python/import.c
index f1d3d0c..07fff18 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -305,7 +305,8 @@
#ifdef WITH_THREAD
lock_import();
#endif
- return Py_None;
+ Py_INCREF(Py_None);
+ return Py_None;
}
static PyObject *
@@ -320,7 +321,8 @@
return NULL;
}
#endif
- return Py_None;
+ Py_INCREF(Py_None);
+ return Py_None;
}
/* Helper for sys */
@@ -2778,8 +2780,9 @@
PyDoc_STRVAR(doc_acquire_lock,
"acquire_lock() -> None\n\
-Acquires the interpreter's import lock for the current thread. This lock
-should be used by import hooks to ensure thread-safety when importing modules.
+Acquires the interpreter's import lock for the current thread.\n\
+This lock should be used by import hooks to ensure thread-safety\n\
+when importing modules.\n\
On platforms without threads, this function does nothing.");
PyDoc_STRVAR(doc_release_lock,