Material: Fix memory leaks
This commit is contained in:
@@ -64,17 +64,18 @@ int Array2DPy::PyInit(PyObject* /*args*/, PyObject* /*kwd*/)
|
||||
Py::List Array2DPy::getArray() const
|
||||
{
|
||||
Py::List list;
|
||||
|
||||
auto array = getMaterial2DArrayPtr()->getArray();
|
||||
|
||||
for (auto& row : array) {
|
||||
Py::List* rowList = new Py::List();
|
||||
Py::List rowList;
|
||||
for (auto& column : *row) {
|
||||
auto quantity =
|
||||
new Base::QuantityPy(new Base::Quantity(column.value<Base::Quantity>()));
|
||||
rowList->append(Py::Object(quantity));
|
||||
rowList.append(Py::asObject(quantity));
|
||||
}
|
||||
|
||||
list.append(*rowList);
|
||||
list.append(rowList);
|
||||
}
|
||||
|
||||
return list;
|
||||
@@ -104,7 +105,7 @@ PyObject* Array2DPy::getRow(PyObject* args)
|
||||
for (auto& column : *arrayRow) {
|
||||
auto quantity =
|
||||
new Base::QuantityPy(new Base::Quantity(column.value<Base::Quantity>()));
|
||||
list.append(Py::Object(quantity));
|
||||
list.append(Py::asObject(quantity));
|
||||
}
|
||||
|
||||
return Py::new_reference_to(list);
|
||||
|
||||
@@ -67,17 +67,17 @@ Py::List Array3DPy::getArray() const
|
||||
auto array = getMaterial3DArrayPtr()->getArray();
|
||||
|
||||
for (auto& depth : array) {
|
||||
Py::List* depthList = new Py::List();
|
||||
Py::List depthList;
|
||||
for (auto& row : *std::get<1>(depth)) {
|
||||
Py::List* rowList = new Py::List();
|
||||
Py::List rowList;
|
||||
for (auto& column : *row) {
|
||||
auto quantity = new Base::QuantityPy(new Base::Quantity(column));
|
||||
rowList->append(Py::Object(quantity));
|
||||
rowList.append(Py::asObject(quantity));
|
||||
}
|
||||
|
||||
depthList->append(*rowList);
|
||||
depthList.append(rowList);
|
||||
}
|
||||
list.append(*depthList);
|
||||
list.append(depthList);
|
||||
}
|
||||
|
||||
return list;
|
||||
|
||||
@@ -163,17 +163,17 @@ PyObject* MaterialManagerPy::materialsWithModel(PyObject* args)
|
||||
}
|
||||
|
||||
auto materials = getMaterialManagerPtr()->materialsWithModel(QString::fromStdString(uuid));
|
||||
PyObject* dict = PyDict_New();
|
||||
Py::Dict dict;
|
||||
|
||||
for (auto it = materials->begin(); it != materials->end(); it++) {
|
||||
QString key = it->first;
|
||||
auto material = it->second;
|
||||
|
||||
PyObject* materialPy = new MaterialPy(new Material(*material));
|
||||
PyDict_SetItem(dict, PyUnicode_FromString(key.toStdString().c_str()), materialPy);
|
||||
dict.setItem(key.toStdString(), Py::asObject(materialPy));
|
||||
}
|
||||
|
||||
return dict;
|
||||
return Py::new_reference_to(dict);
|
||||
}
|
||||
|
||||
PyObject* MaterialManagerPy::materialsWithModelComplete(PyObject* args)
|
||||
@@ -185,17 +185,17 @@ PyObject* MaterialManagerPy::materialsWithModelComplete(PyObject* args)
|
||||
|
||||
auto materials =
|
||||
getMaterialManagerPtr()->materialsWithModelComplete(QString::fromStdString(uuid));
|
||||
PyObject* dict = PyDict_New();
|
||||
Py::Dict dict;
|
||||
|
||||
for (auto it = materials->begin(); it != materials->end(); it++) {
|
||||
QString key = it->first;
|
||||
auto material = it->second;
|
||||
|
||||
PyObject* materialPy = new MaterialPy(new Material(*material));
|
||||
PyDict_SetItem(dict, PyUnicode_FromString(key.toStdString().c_str()), materialPy);
|
||||
dict.setItem(key.toStdString(), Py::asObject(materialPy));
|
||||
}
|
||||
|
||||
return dict;
|
||||
return Py::new_reference_to(dict);
|
||||
}
|
||||
|
||||
PyObject* MaterialManagerPy::save(PyObject* args, PyObject* kwds)
|
||||
|
||||
Reference in New Issue
Block a user