summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Doc/library/msilib.rst6
-rw-r--r--Misc/NEWS.d/next/Windows/2017-10-26-23-02-57.bpo-20486.3IdsZ1.rst2
-rw-r--r--PC/_msi.c21
3 files changed, 21 insertions, 8 deletions
diff --git a/Doc/library/msilib.rst b/Doc/library/msilib.rst
index 09d00a6..a66e52c 100644
--- a/Doc/library/msilib.rst
+++ b/Doc/library/msilib.rst
@@ -152,12 +152,18 @@ Database Objects
:c:func:`MsiGetSummaryInformation`. *count* is the maximum number of updated
values.
+.. method:: Database.Close()
+
+ Close the database object, through :c:func:`MsiCloseHandle`.
+
+ .. versionadded:: 3.7
.. seealso::
`MSIDatabaseOpenView <https://msdn.microsoft.com/library?url=/library/en-us/msi/setup/msidatabaseopenview.asp>`_
`MSIDatabaseCommit <https://msdn.microsoft.com/library?url=/library/en-us/msi/setup/msidatabasecommit.asp>`_
`MSIGetSummaryInformation <https://msdn.microsoft.com/library?url=/library/en-us/msi/setup/msigetsummaryinformation.asp>`_
+ `MsiCloseHandle <https://msdn.microsoft.com/en-us/library/windows/desktop/aa370067(v=vs.85).aspx>`_
.. _view-objects:
diff --git a/Misc/NEWS.d/next/Windows/2017-10-26-23-02-57.bpo-20486.3IdsZ1.rst b/Misc/NEWS.d/next/Windows/2017-10-26-23-02-57.bpo-20486.3IdsZ1.rst
new file mode 100644
index 0000000..d65971e
--- /dev/null
+++ b/Misc/NEWS.d/next/Windows/2017-10-26-23-02-57.bpo-20486.3IdsZ1.rst
@@ -0,0 +1,2 @@
+Implement the ``Database.Close()`` method to help closing MSI database
+objects.
diff --git a/PC/_msi.c b/PC/_msi.c
index a15f684..df6c881 100644
--- a/PC/_msi.c
+++ b/PC/_msi.c
@@ -287,14 +287,6 @@ msiobj_dealloc(msiobj* msidb)
}
static PyObject*
-msiobj_close(msiobj* msidb, PyObject *args)
-{
- MsiCloseHandle(msidb->h);
- msidb->h = 0;
- Py_RETURN_NONE;
-}
-
-static PyObject*
msierror(int status)
{
int code;
@@ -342,6 +334,17 @@ msierror(int status)
return NULL;
}
+static PyObject*
+msidb_close(msiobj* msidb, PyObject *args)
+{
+ int status;
+ if ((status = MsiCloseHandle(msidb->h)) != ERROR_SUCCESS) {
+ return msierror(status);
+ }
+ msidb->h = 0;
+ Py_RETURN_NONE;
+}
+
/*************************** Record objects **********************/
static PyObject*
@@ -901,6 +904,8 @@ static PyMethodDef db_methods[] = {
PyDoc_STR("Commit() -> None\nWraps MsiDatabaseCommit")},
{ "GetSummaryInformation", (PyCFunction)msidb_getsummaryinformation, METH_VARARGS,
PyDoc_STR("GetSummaryInformation(updateCount) -> viewobj\nWraps MsiGetSummaryInformation")},
+ { "Close", (PyCFunction)msidb_close, METH_NOARGS,
+ PyDoc_STR("Close() -> None\nWraps MsiCloseHandle")},
{ NULL, NULL }
};