Eine Frage: Verwende ich hier das Py_INCREF richtig? danke Julian PyObject* get_error_str(HRESULT hr) { if(FACILITY_WINDOWS == HRESULT_FACILITY(hr)) hr = HRESULT_CODE(hr); char* pErrMsg; PyObject* error; if(FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM, NULL, hr, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPSTR)&pErrMsg, 0, NULL) != 0) { error = PyString_FromFormat("[0x%x] %s", hr ,pErrMsg); LocalFree(pErrMsg); } else error = PyString_FromFormat("[0x%x] unknown error code", hr); Py_INCREF(error); return error; } _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
Eine Frage: Verwende ich hier das Py_INCREF richtig? danke Julian PyObject* get_error_str(HRESULT hr) { if(FACILITY_WINDOWS == HRESULT_FACILITY(hr)) hr = HRESULT_CODE(hr); char* pErrMsg; PyObject* error; if(FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM, NULL, hr, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPSTR)&pErrMsg, 0, NULL) != 0) { error = PyString_FromFormat("[0x%x] %s", hr ,pErrMsg); LocalFree(pErrMsg); } else error = PyString_FromFormat("[0x%x] unknown error code", hr); Py_INCREF(error); return error; } _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Julian Rath wrote:
Eine Frage: Verwende ich hier das Py_INCREF richtig?
Generell kannst du dir merken: Bei Objekten die nur als Rückgabewert erzeugst brauchst du kein Py_INCREF. Wenn du None zurückgibts, mußt du zuvor ebenfalls die Referenz erhöhen. Liebe Grüße Daniel -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.1 (GNU/Linux) Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org iD8DBQFC1Cc8y/mkIQp7AD0RAkniAKCcCc703O5MbdnUhu0+HNKGSxqnNgCeLtQL cEUlcNhtONX0XfFKQlVhE1A= =5rXg -----END PGP SIGNATURE----- _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
On Tue, Jul 12, 2005 at 12:13:03PM +0200, Julian Rath wrote:
Eine Frage: Verwende ich hier das Py_INCREF richtig? danke Julian
PyObject* get_error_str(HRESULT hr) { if(FACILITY_WINDOWS == HRESULT_FACILITY(hr)) hr = HRESULT_CODE(hr); char* pErrMsg; PyObject* error; if(FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM, NULL, hr, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPSTR)&pErrMsg, 0, NULL) != 0) { error = PyString_FromFormat("[0x%x] %s", hr ,pErrMsg); LocalFree(pErrMsg); } else error = PyString_FromFormat("[0x%x] unknown error code", hr); Py_INCREF(error); return error; }
Nein. Das Py_INCREF erzeugt eine Referenz zu viel. Lass es weg. Warum hast du gemeint dass du es brauchst? Vielleicht können wir ein Misverständnis ausräumen ... -- Gerhard -- Gerhard Häring - gh@ghaering.de - Python, web & database development _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
participants (3)
-
Daniel Poelzleithner
-
Gerhard Haering
-
Julian Rath