summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTony Asleson <tasleson@redhat.com>2015-05-04 14:55:00 -0500
committerTony Asleson <tasleson@redhat.com>2015-05-06 08:51:04 -0500
commitc21f1ba07a4701b0653bc086673be43ede20efc1 (patch)
treee03f5161a0294494b03319923d18038fc53d6eb7
parent91f737383c7c4be70689c9d6ce809de00dc1485e (diff)
downloadlvm2-c21f1ba07a4701b0653bc086673be43ede20efc1.tar.gz
python: Build correct python value for numerical property
With the lvm2app C API adding the ability to determine when a property is signed we can then use this information to construct the correct representation of the number for python which will maintain value and sign. Previously, we only represented the numbers in python as positive integers. Python long type exceeds the range for unsigned and signed integers, we just need to use the appropriate parsing code to build correctly. Python part of the fix for: https://bugzilla.redhat.com/show_bug.cgi?id=838257 Signed-off-by: Tony Asleson <tasleson@redhat.com>
-rw-r--r--python/liblvm.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/python/liblvm.c b/python/liblvm.c
index 615174555..f4a7a2de9 100644
--- a/python/liblvm.c
+++ b/python/liblvm.c
@@ -870,10 +870,15 @@ static PyObject *get_property(struct lvm_property_value *prop)
if (!(pytuple = PyTuple_New(2)))
return NULL;
- if (prop->is_integer)
- PyTuple_SET_ITEM(pytuple, 0, Py_BuildValue("K", prop->value.integer));
- else
+ if (prop->is_integer) {
+ if (prop->is_signed) {
+ PyTuple_SET_ITEM(pytuple, 0, Py_BuildValue("L", prop->value.signed_integer));
+ } else {
+ PyTuple_SET_ITEM(pytuple, 0, Py_BuildValue("K", prop->value.integer));
+ }
+ } else {
PyTuple_SET_ITEM(pytuple, 0, PYSTRTYPE_FROMSTRING(prop->value.string));
+ }
if (prop->is_settable)
setable = Py_True;