summaryrefslogtreecommitdiffstats
path: root/dmidecode.c
diff options
context:
space:
mode:
authorroot <root@abc39116-655e-4be6-ad55-d661dc543056>2008-07-25 01:13:13 +0000
committerroot <root@abc39116-655e-4be6-ad55-d661dc543056>2008-07-25 01:13:13 +0000
commitdfcf0bfff41f31fd7f75df43e37e2ba7db70b362 (patch)
tree98a860293f6104ce92b914fe8a31c95763874db1 /dmidecode.c
parent825f492e53776cbd5cb957a61b0299b3edf5ced2 (diff)
downloadpython-dmidecode-dfcf0bfff41f31fd7f75df43e37e2ba7db70b362.tar.gz
python-dmidecode-dfcf0bfff41f31fd7f75df43e37e2ba7db70b362.tar.xz
python-dmidecode-dfcf0bfff41f31fd7f75df43e37e2ba7db70b362.zip
Cleanup (DECREF).
git-svn-id: svn://svn.autonomy.net.au/python-dmidecode@20 abc39116-655e-4be6-ad55-d661dc543056
Diffstat (limited to 'dmidecode.c')
-rw-r--r--dmidecode.c40
1 files changed, 34 insertions, 6 deletions
diff --git a/dmidecode.c b/dmidecode.c
index b410170..d81662a 100644
--- a/dmidecode.c
+++ b/dmidecode.c
@@ -2645,19 +2645,47 @@ void dmi_decode(struct dmi_header *h, u16 ver, PyObject* pydata) {
dmi_minor* last = dmiAppendObject(++minor, "JUNK", "NODATA");
const char *id = last->major->id;
+ PyObject *_key, *_val;
+
PyObject *pymajor = PyDict_New();
- PyDict_SetItem(pymajor, PyString_FromString("code"), PyInt_FromLong((long)last->major->code));
- PyDict_SetItem(pymajor, PyString_FromString("id"), PyString_FromString(last->major->id));
- PyDict_SetItem(pymajor, PyString_FromString("name"), PyString_FromString(last->major->desc));
+
+ _key = PyString_FromString("code");
+ _val = PyInt_FromLong((long)last->major->code);
+ PyDict_SetItem(pymajor, _key, _val);
+ Py_DECREF(_key);
+ Py_DECREF(_val);
+
+ _key = PyString_FromString("id");
+ _val = PyString_FromString(last->major->id);
+ PyDict_SetItem(pymajor, _key, _val);
+ Py_DECREF(_key);
+ Py_DECREF(_val);
+
+ _key = PyString_FromString("name");
+ _val = PyString_FromString(last->major->desc);
+ PyDict_SetItem(pymajor, _key, _val);
+ Py_DECREF(_key);
+ Py_DECREF(_val);
PyObject *pyminor = PyDict_New();
while((last = last->next)) {
//printf("%d:<%s, %s> | %ld:[%s => %s]\n", last->major->code, last->major->id, last->major->desc, last->id, last->key, last->value);
- PyDict_SetItem(pyminor, PyString_FromString(last->key), PyString_FromString(last->value));
+ _key = PyString_FromString(last->key);
+ _val = PyString_FromString(last->value);
+ PyDict_SetItem(pyminor, _key, _val);
+ Py_DECREF(_key);
+ Py_DECREF(_val);
}
- PyDict_SetItem(pymajor, PyString_FromString("data"), pyminor);
+ _key = PyString_FromString("data");
+ PyDict_SetItem(pymajor, _key, pyminor);
+ Py_DECREF(_key);
+ Py_DECREF(pyminor);
+
+ _key = PyString_FromString(id);
+ PyDict_SetItem(pydata, _key, pymajor);
+ Py_DECREF(_key);
+ Py_DECREF(pymajor);
- PyDict_SetItem(pydata, PyString_FromString(id), pymajor);
/********************************************************************************/
break;