classification
Title: Compilation Warning for memoryview.tobytes and _collections._tuplegetter.__reduce__
Type: Stage: resolved
Components: Versions: Python 3.8
process
Status: closed Resolution: fixed
Dependencies: Superseder: Invalid function cast warnings with gcc 8 for METH_NOARGS
View: 33012
Assigned To: matrixise Nosy List: matrixise, serhiy.storchaka, vstinner
Priority: normal Keywords: easy (C), patch

Created on 2019-03-05 14:31 by matrixise, last changed 2019-03-05 16:41 by serhiy.storchaka. This issue is now closed.

Pull Requests
URL Status Linked Edit
PR 12179 merged matrixise, 2019-03-05 14:33
PR 12180 merged serhiy.storchaka, 2019-03-05 15:31
Messages (7)
msg337191 - (view) Author: Stéphane Wirtel (matrixise) * (Python committer) Date: 2019-03-05 14:31
gcc -pthread -c -Wno-unused-result -Wsign-compare -DDYNAMIC_ANNOTATIONS_ENABLED=1 -g -Og -Wall    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration  -I./Include/internal  -I. -I./Include    -DPy_BUILD_CORE -o Objects/memoryobject.o Objects/memoryobject.c
Objects/memoryobject.c:3112:21: warning: cast between incompatible function types from 'PyObject * (*)(PyMemoryViewObject *, PyObject *, PyObject *)' {aka 'struct _object * (*)(struct <anonymous> *, struct _object *, struct _object *)'} to 'PyObject * (*)(PyObject *, PyObject *)' {aka 'struct _object * (*)(struct _object *, struct _object *)'} [-Wcast-function-type]
     {"tobytes",     (PyCFunction)memory_tobytes, METH_VARARGS|METH_KEYWORDS, memory_tobytes_doc},


I am preparing a small PR for this issue.
msg337195 - (view) Author: Stéphane Wirtel (matrixise) * (Python committer) Date: 2019-03-05 14:49
Fix an other warning in the same PR

_collections._tuplegetter.__reduce__
msg337196 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2019-03-05 14:57
I prefer to reuse bpo-33012.
msg337208 - (view) Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) Date: 2019-03-05 15:33
This is not correct fix for tuplegetter_reduce. tuplegetter_reduce should have two parameters, just the second is unused.
msg337211 - (view) Author: Stéphane Wirtel (matrixise) * (Python committer) Date: 2019-03-05 15:41
Hi @serhiy,

Thank you for your PR, I prefer your patch, just because you have just added the PyObject *Py_UNUSED(ignored) to the tuplegetter_reduce function. And in this case, you don't need to cast to (void(*)(void)).

I will use this tip for the next time.

Thank
msg337212 - (view) Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) Date: 2019-03-05 15:45
This is only for methods with METH_NOARGS. The code that calls such method, calls it with two arguments, passing NULL as the second argument. So the signature of the C function should have two parameters. Functions for methods with METH_KEYWORDS or METH_FASTCALL should have different corresponding signatures.
msg337226 - (view) Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) Date: 2019-03-05 16:41
New changeset adfffc7343ce7ebc88ec734a803d3247ba8927fb by Serhiy Storchaka in branch 'master':
Fix the C function signature for _collections._tuplegetter.__reduce__. (GH-12180)
https://github.com/python/cpython/commit/adfffc7343ce7ebc88ec734a803d3247ba8927fb
History
Date User Action Args
2019-03-05 16:41:13serhiy.storchakasetresolution: duplicate -> fixed
messages: + msg337226
2019-03-05 15:45:46serhiy.storchakasetmessages: + msg337212
2019-03-05 15:41:16matrixisesetmessages: + msg337211
2019-03-05 15:33:51serhiy.storchakasetnosy: + serhiy.storchaka
messages: + msg337208
2019-03-05 15:31:53serhiy.storchakasetpull_requests: + pull_request12176
2019-03-05 14:57:52vstinnersetstatus: open -> closed

superseder: Invalid function cast warnings with gcc 8 for METH_NOARGS

nosy: + vstinner
messages: + msg337196
resolution: duplicate
stage: patch review -> resolved
2019-03-05 14:49:15matrixisesetmessages: + msg337195
title: Compilation Warning for memoryview.tobytes -> Compilation Warning for memoryview.tobytes and _collections._tuplegetter.__reduce__
2019-03-05 14:34:32matrixisesetkeywords: + easy (C)
2019-03-05 14:33:05matrixisesetkeywords: + patch
stage: patch review
pull_requests: + pull_request12174
2019-03-05 14:31:54matrixisecreate