summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBerker Peksag <berker.peksag@gmail.com>2017-11-24 16:04:40 (GMT)
committerGitHub <noreply@github.com>2017-11-24 16:04:40 (GMT)
commit412f00b839eae2bc07ca08a8e615c3d7dc870646 (patch)
tree126196c0b0e68358561f2f3687ab90a144281491
parentbfa89b21e119bac7fed4a5decc26f1fff8ec359e (diff)
downloadcpython-412f00b839eae2bc07ca08a8e615c3d7dc870646.zip
cpython-412f00b839eae2bc07ca08a8e615c3d7dc870646.tar.gz
cpython-412f00b839eae2bc07ca08a8e615c3d7dc870646.tar.bz2
[3.6] bpo-12239: Make GetProperty() return None for VT_EMPTY (GH-4539)
The previous behavior was to raise an exception NotImplementedError: result of type 0 when the value of the property is VT_EMPTY. (cherry picked from commit 19fb134185ce155bc53f517116fca73093ba55e9)
-rw-r--r--Lib/test/test_msilib.py7
-rw-r--r--Misc/NEWS.d/next/Library/2017-11-24-14-07-55.bpo-12239.Nj3A0x.rst2
-rw-r--r--PC/_msi.c2
3 files changed, 11 insertions, 0 deletions
diff --git a/Lib/test/test_msilib.py b/Lib/test/test_msilib.py
index eb2c76e..fec435e 100644
--- a/Lib/test/test_msilib.py
+++ b/Lib/test/test_msilib.py
@@ -52,6 +52,13 @@ class MsiDatabaseTestCase(unittest.TestCase):
msilib.OpenDatabase(db_path, msilib.MSIDBOPEN_CREATE)
self.assertEqual(str(cm.exception), 'create failed')
+ def test_get_property_vt_empty(self):
+ db, db_path = init_database()
+ summary = db.GetSummaryInformation(0)
+ self.assertIsNone(summary.GetProperty(msilib.PID_SECURITY))
+ del db
+ self.addCleanup(unlink, db_path)
+
class Test_make_id(unittest.TestCase):
#http://msdn.microsoft.com/en-us/library/aa369212(v=vs.85).aspx
diff --git a/Misc/NEWS.d/next/Library/2017-11-24-14-07-55.bpo-12239.Nj3A0x.rst b/Misc/NEWS.d/next/Library/2017-11-24-14-07-55.bpo-12239.Nj3A0x.rst
new file mode 100644
index 0000000..20d9477
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2017-11-24-14-07-55.bpo-12239.Nj3A0x.rst
@@ -0,0 +1,2 @@
+Make :meth:`msilib.SummaryInformation.GetProperty` return ``None`` when the
+value of property is ``VT_EMPTY``. Initial patch by Mark Mc Mahon.
diff --git a/PC/_msi.c b/PC/_msi.c
index 00755d6..a7c8fa3 100644
--- a/PC/_msi.c
+++ b/PC/_msi.c
@@ -578,6 +578,8 @@ summary_getproperty(msiobj* si, PyObject *args)
if (sval != sbuf)
free(sval);
return result;
+ case VT_EMPTY:
+ Py_RETURN_NONE;
}
PyErr_Format(PyExc_NotImplementedError, "result of type %d", type);
return NULL;