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.
if (pyname == NULL) {
return NULL;
}
- return contextvar_new(pyname, def);
+ PyContextVar *var = contextvar_new(pyname, def);
+ Py_DECREF(pyname);
+ return var;
}
var->var_cached_tsid = 0;
var->var_cached_tsver = 0;
- if (_PyObject_GC_IS_TRACKED(name) ||
- (def != NULL && _PyObject_GC_IS_TRACKED(def)))
+ if (_PyObject_GC_MAY_BE_TRACKED(name) ||
+ (def != NULL && _PyObject_GC_MAY_BE_TRACKED(def)))
{
PyObject_GC_Track(var);
}
*/
i = i - ((i >> 1) & 0x55555555);
i = (i & 0x33333333) + ((i >> 2) & 0x33333333);
- return ((i + (i >> 4) & 0xF0F0F0F) * 0x1010101) >> 24;
+ return (((i + (i >> 4)) & 0xF0F0F0F) * 0x1010101) >> 24;
}
static inline uint32_t