mirror of https://github.com/python/cpython
gh-105927: _ssl GET_SOCKET() uses _PyWeakref_GET_REF() (#106002)
This commit is contained in:
parent
ee52158f20
commit
7b3ed5b29f
|
@ -383,10 +383,20 @@ typedef enum {
|
|||
#define ERRSTR1(x,y,z) (x ":" y ": " z)
|
||||
#define ERRSTR(x) ERRSTR1("_ssl.c", Py_STRINGIFY(__LINE__), x)
|
||||
|
||||
/* Get the socket from a PySSLSocket, if it has one */
|
||||
// Get the socket from a PySSLSocket, if it has one.
|
||||
// Return a borrowed reference.
|
||||
static inline PySocketSockObject* GET_SOCKET(PySSLSocket *obj) {
|
||||
if (obj->Socket) {
|
||||
return (PySocketSockObject *)PyWeakref_GetObject(obj->Socket);
|
||||
PyObject *sock = _PyWeakref_GET_REF(obj->Socket);
|
||||
if (sock != NULL) {
|
||||
// GET_SOCKET() returns a borrowed reference
|
||||
Py_DECREF(sock);
|
||||
}
|
||||
else {
|
||||
// dead weak reference
|
||||
sock = Py_None;
|
||||
}
|
||||
return (PySocketSockObject *)sock; // borrowed reference
|
||||
}
|
||||
else {
|
||||
return NULL;
|
||||
|
|
Loading…
Reference in New Issue