mirror of
https://github.com/python/cpython.git
synced 2025-09-26 10:19:53 +00:00
bpo-35059: Cast void* to PyObject* (GH-10650)
Don't pass void* to Python macros: use _PyObject_CAST().
This commit is contained in:
parent
b37672daf6
commit
a42de742e7
4 changed files with 17 additions and 11 deletions
|
@ -1171,8 +1171,9 @@ This function is meant for internal and specialized purposes only.\n\
|
||||||
In most applications `threading.enumerate()` should be used instead.");
|
In most applications `threading.enumerate()` should be used instead.");
|
||||||
|
|
||||||
static void
|
static void
|
||||||
release_sentinel(void *wr)
|
release_sentinel(void *wr_raw)
|
||||||
{
|
{
|
||||||
|
PyObject *wr = _PyObject_CAST(wr_raw);
|
||||||
/* Tricky: this function is called when the current thread state
|
/* Tricky: this function is called when the current thread state
|
||||||
is being deleted. Therefore, only simple C code can safely
|
is being deleted. Therefore, only simple C code can safely
|
||||||
execute here. */
|
execute here. */
|
||||||
|
|
|
@ -1847,20 +1847,21 @@ _PyGC_Dump(PyGC_Head *g)
|
||||||
functions must always be available */
|
functions must always be available */
|
||||||
|
|
||||||
void
|
void
|
||||||
PyObject_GC_Track(void *op)
|
PyObject_GC_Track(void *op_raw)
|
||||||
{
|
{
|
||||||
PyObject *obj = (PyObject *)op;
|
PyObject *op = _PyObject_CAST(op_raw);
|
||||||
if (_PyObject_GC_IS_TRACKED(op)) {
|
if (_PyObject_GC_IS_TRACKED(op)) {
|
||||||
_PyObject_ASSERT_FAILED_MSG(op,
|
_PyObject_ASSERT_FAILED_MSG(op,
|
||||||
"object already tracked "
|
"object already tracked "
|
||||||
"by the garbage collector");
|
"by the garbage collector");
|
||||||
}
|
}
|
||||||
_PyObject_GC_TRACK(obj);
|
_PyObject_GC_TRACK(op);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
PyObject_GC_UnTrack(void *op)
|
PyObject_GC_UnTrack(void *op_raw)
|
||||||
{
|
{
|
||||||
|
PyObject *op = _PyObject_CAST(op_raw);
|
||||||
/* Obscure: the Py_TRASHCAN mechanism requires that we be able to
|
/* Obscure: the Py_TRASHCAN mechanism requires that we be able to
|
||||||
* call PyObject_GC_UnTrack twice on an object.
|
* call PyObject_GC_UnTrack twice on an object.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1171,14 +1171,17 @@ unicode_kind_name(PyObject *unicode)
|
||||||
|
|
||||||
#ifdef Py_DEBUG
|
#ifdef Py_DEBUG
|
||||||
/* Functions wrapping macros for use in debugger */
|
/* Functions wrapping macros for use in debugger */
|
||||||
char *_PyUnicode_utf8(void *unicode){
|
char *_PyUnicode_utf8(void *unicode_raw){
|
||||||
|
PyObject *unicode = _PyObject_CAST(unicode_raw);
|
||||||
return PyUnicode_UTF8(unicode);
|
return PyUnicode_UTF8(unicode);
|
||||||
}
|
}
|
||||||
|
|
||||||
void *_PyUnicode_compact_data(void *unicode) {
|
void *_PyUnicode_compact_data(void *unicode_raw) {
|
||||||
|
PyObject *unicode = _PyObject_CAST(unicode_raw);
|
||||||
return _PyUnicode_COMPACT_DATA(unicode);
|
return _PyUnicode_COMPACT_DATA(unicode);
|
||||||
}
|
}
|
||||||
void *_PyUnicode_data(void *unicode){
|
void *_PyUnicode_data(void *unicode_raw) {
|
||||||
|
PyObject *unicode = _PyObject_CAST(unicode_raw);
|
||||||
printf("obj %p\n", unicode);
|
printf("obj %p\n", unicode);
|
||||||
printf("compact %d\n", PyUnicode_IS_COMPACT(unicode));
|
printf("compact %d\n", PyUnicode_IS_COMPACT(unicode));
|
||||||
printf("compact ascii %d\n", PyUnicode_IS_COMPACT_ASCII(unicode));
|
printf("compact ascii %d\n", PyUnicode_IS_COMPACT_ASCII(unicode));
|
||||||
|
|
|
@ -373,10 +373,11 @@ hamt_node_collision_count(PyHamtNode_Collision *node);
|
||||||
|
|
||||||
#ifdef Py_DEBUG
|
#ifdef Py_DEBUG
|
||||||
static void
|
static void
|
||||||
_hamt_node_array_validate(void *o)
|
_hamt_node_array_validate(void *obj_raw)
|
||||||
{
|
{
|
||||||
assert(IS_ARRAY_NODE(o));
|
PyObject *obj = _PyObject_CAST(obj_raw);
|
||||||
PyHamtNode_Array *node = (PyHamtNode_Array*)(o);
|
assert(IS_ARRAY_NODE(obj));
|
||||||
|
PyHamtNode_Array *node = (PyHamtNode_Array*)obj;
|
||||||
Py_ssize_t i = 0, count = 0;
|
Py_ssize_t i = 0, count = 0;
|
||||||
for (; i < HAMT_ARRAY_NODE_SIZE; i++) {
|
for (; i < HAMT_ARRAY_NODE_SIZE; i++) {
|
||||||
if (node->a_array[i] != NULL) {
|
if (node->a_array[i] != NULL) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue