bpo-32436: Fix a refleak; var GC tracking; a GCC warning (#5326)
The refleak in question wasn't really important, as context vars are usually created at the toplevel and live as long as the interpreter lives, so the context var name isn't ever GCed anyways.
This commit is contained in:
parent
b31206a223
commit
6ab62920c8
|
@ -134,7 +134,9 @@ PyContextVar_New(const char *name, PyObject *def)
|
||||||
if (pyname == NULL) {
|
if (pyname == NULL) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
return contextvar_new(pyname, def);
|
PyContextVar *var = contextvar_new(pyname, def);
|
||||||
|
Py_DECREF(pyname);
|
||||||
|
return var;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -741,8 +743,8 @@ contextvar_new(PyObject *name, PyObject *def)
|
||||||
var->var_cached_tsid = 0;
|
var->var_cached_tsid = 0;
|
||||||
var->var_cached_tsver = 0;
|
var->var_cached_tsver = 0;
|
||||||
|
|
||||||
if (_PyObject_GC_IS_TRACKED(name) ||
|
if (_PyObject_GC_MAY_BE_TRACKED(name) ||
|
||||||
(def != NULL && _PyObject_GC_IS_TRACKED(def)))
|
(def != NULL && _PyObject_GC_MAY_BE_TRACKED(def)))
|
||||||
{
|
{
|
||||||
PyObject_GC_Track(var);
|
PyObject_GC_Track(var);
|
||||||
}
|
}
|
||||||
|
|
|
@ -449,7 +449,7 @@ hamt_bitcount(uint32_t i)
|
||||||
*/
|
*/
|
||||||
i = i - ((i >> 1) & 0x55555555);
|
i = i - ((i >> 1) & 0x55555555);
|
||||||
i = (i & 0x33333333) + ((i >> 2) & 0x33333333);
|
i = (i & 0x33333333) + ((i >> 2) & 0x33333333);
|
||||||
return ((i + (i >> 4) & 0xF0F0F0F) * 0x1010101) >> 24;
|
return (((i + (i >> 4)) & 0xF0F0F0F) * 0x1010101) >> 24;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline uint32_t
|
static inline uint32_t
|
||||||
|
|
Loading…
Reference in New Issue