use cleaner way to instantiate PyRainmeter

This commit is contained in:
Johannes Blume 2013-03-03 19:39:57 +01:00
parent 7dccf686d9
commit 60c3938ccd
2 changed files with 4 additions and 4 deletions

View File

@ -193,10 +193,10 @@ PyObject* CreateRainmeterObject(void *rm)
{ {
if (!(rainmeterType.tp_flags & Py_TPFLAGS_READY)) if (!(rainmeterType.tp_flags & Py_TPFLAGS_READY))
{ {
rainmeterType.tp_new = PyType_GenericNew;
PyType_Ready(&rainmeterType); PyType_Ready(&rainmeterType);
} }
Py_INCREF(&rainmeterType); PyObject *obj = PyObject_CallObject((PyObject*) &rainmeterType, NULL);
RainmeterObject *obj = PyObject_New(RainmeterObject, &rainmeterType); ((RainmeterObject*)obj)->rm = rm;
obj->rm = rm;
return (PyObject*) obj; return (PyObject*) obj;
} }

View File

@ -169,12 +169,12 @@ PLUGIN_EXPORT double Update(void* data)
if (resultObj != NULL) if (resultObj != NULL)
{ {
result = PyFloat_Check(resultObj) ? PyFloat_AsDouble(resultObj) : 0.0; result = PyFloat_Check(resultObj) ? PyFloat_AsDouble(resultObj) : 0.0;
Py_DECREF(resultObj);
} }
else else
{ {
PyErr_Clear(); PyErr_Clear();
} }
Py_XDECREF(resultObj);
PyEval_SaveThread(); PyEval_SaveThread();
return result; return result;
} }