--- src/parted/disk.py | 16 ++++++++++++---- src/pydisk.c | 26 ++++++++++++++++---------- 2 files changed, 28 insertions(+), 14 deletions(-) diff --git a/src/parted/disk.py b/src/parted/disk.py index b090c0e..cdfdf0a 100644 --- a/src/parted/disk.py +++ b/src/parted/disk.py @@ -177,8 +177,13 @@ class Disk(object): def addPartition(self, partition=None, constraint=None): """Add a new Partition to this Disk with the given Constraint.""" - if self.__disk.add_partition(partition.getPedPartition(), - constraint.getPedConstraint()): + if constraint: + result = self.__disk.add_partition(partition.getPedPartition(), + constraint.getPedConstraint()) + else: + result = self.__disk.add_partition(partition.getPedPartition()) + + if result: partition.geometry = parted.Geometry(PedGeometry=partition.getPedPartition().geom) self.partitions.invalidate() return True @@ -227,8 +232,11 @@ class Disk(object): def maximizePartition(self, partition=None, constraint=None): """Grow the Partition's Geometry to the maximum possible subject to Constraint.""" - return self.__disk.maximize_partition(partition.getPedPartition(), - constraint.getPedConstraint()) + if constraint: + return self.__disk.maximize_partition(partition.getPedPartition(), + constraint.getPedConstraint()) + else: + return self.__disk.maximize_partition(partition.getPedPartition()) def calculateMaxPartitionGeometry(self, partition=None, constraint=None): """Get the maximum Geometry the Partition can be grown to, diff --git a/src/pydisk.c b/src/pydisk.c index eef0efb..5886403 100644 --- a/src/pydisk.c +++ b/src/pydisk.c @@ -1148,7 +1148,7 @@ PyObject *py_ped_disk_add_partition(PyObject *s, PyObject *args) { PedConstraint *out_constraint = NULL; int ret = 0; - if (!PyArg_ParseTuple(args, "O!O!",&_ped_Partition_Type_obj, + if (!PyArg_ParseTuple(args, "O!|O!",&_ped_Partition_Type_obj, &in_part, &_ped_Constraint_Type_obj, &in_constraint)) { return NULL; } @@ -1168,9 +1168,11 @@ PyObject *py_ped_disk_add_partition(PyObject *s, PyObject *args) { return NULL; } - out_constraint = _ped_Constraint2PedConstraint(in_constraint); - if (out_constraint == NULL) { - return NULL; + if (in_constraint) { + out_constraint = _ped_Constraint2PedConstraint(in_constraint); + if (out_constraint == NULL) { + return NULL; + } } ret = ped_disk_add_partition(disk, out_part, out_constraint); @@ -1193,7 +1195,8 @@ PyObject *py_ped_disk_add_partition(PyObject *s, PyObject *args) { in_part->_owned = 1; *((_ped_Geometry *)in_part->geom)->ped_geometry = out_part->geom; - ped_constraint_destroy(out_constraint); + if (out_constraint) + ped_constraint_destroy(out_constraint); if (ret) { Py_RETURN_TRUE; @@ -1367,7 +1370,7 @@ PyObject *py_ped_disk_maximize_partition(PyObject *s, PyObject *args) { PedConstraint *out_constraint = NULL; int ret = 0; - if (!PyArg_ParseTuple(args, "O!O!", &_ped_Partition_Type_obj, &in_part, + if (!PyArg_ParseTuple(args, "O!|O!", &_ped_Partition_Type_obj, &in_part, &_ped_Constraint_Type_obj, &in_constraint)) { return NULL; } @@ -1387,14 +1390,17 @@ PyObject *py_ped_disk_maximize_partition(PyObject *s, PyObject *args) { return NULL; } - out_constraint = _ped_Constraint2PedConstraint(in_constraint); - if (out_constraint == NULL) { - return NULL; + if (in_constraint) { + out_constraint = _ped_Constraint2PedConstraint(in_constraint); + if (out_constraint == NULL) { + return NULL; + } } ret = ped_disk_maximize_partition(disk, out_part, out_constraint); - ped_constraint_destroy(out_constraint); + if (out_constraint) + ped_constraint_destroy(out_constraint); if (ret == 0) { if (partedExnRaised) { -- 1.6.2 _______________________________________________ Anaconda-devel-list mailing list Anaconda-devel-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/anaconda-devel-list