Skip to content

Commit 9d759b6

Browse files
authored
gh-111178: Change Argument Clinic signature for METH_O (#130682)
Use "PyObject*" for METH_O functions to fix an undefined behavior.
1 parent 4162bc1 commit 9d759b6

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

66 files changed

+843
-190
lines changed

Lib/test/clinic.test.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -4940,7 +4940,7 @@ static int
49404940
Test_metho_not_default_return_converter_impl(TestObj *self, PyObject *a);
49414941

49424942
static PyObject *
4943-
Test_metho_not_default_return_converter(TestObj *self, PyObject *a)
4943+
Test_metho_not_default_return_converter(PyObject *self, PyObject *a)
49444944
{
49454945
PyObject *return_value = NULL;
49464946
int _return_value;
@@ -4957,7 +4957,7 @@ Test_metho_not_default_return_converter(TestObj *self, PyObject *a)
49574957

49584958
static int
49594959
Test_metho_not_default_return_converter_impl(TestObj *self, PyObject *a)
4960-
/*[clinic end generated code: output=b2cce75a7af2e6ce input=428657129b521177]*/
4960+
/*[clinic end generated code: output=8b03f5213c312138 input=428657129b521177]*/
49614961

49624962

49634963
/*[clinic input]

Modules/_asynciomodule.c

+4-4
Original file line numberDiff line numberDiff line change
@@ -2738,8 +2738,8 @@ _asyncio.Task.set_result
27382738
[clinic start generated code]*/
27392739

27402740
static PyObject *
2741-
_asyncio_Task_set_result(TaskObj *self, PyObject *result)
2742-
/*[clinic end generated code: output=1dcae308bfcba318 input=9d1a00c07be41bab]*/
2741+
_asyncio_Task_set_result_impl(TaskObj *self, PyObject *result)
2742+
/*[clinic end generated code: output=e9d8e3cdaf18e258 input=9d1a00c07be41bab]*/
27432743
{
27442744
PyErr_SetString(PyExc_RuntimeError,
27452745
"Task does not support set_result operation");
@@ -2754,8 +2754,8 @@ _asyncio.Task.set_exception
27542754
[clinic start generated code]*/
27552755

27562756
static PyObject *
2757-
_asyncio_Task_set_exception(TaskObj *self, PyObject *exception)
2758-
/*[clinic end generated code: output=bc377fc28067303d input=9a8f65c83dcf893a]*/
2757+
_asyncio_Task_set_exception_impl(TaskObj *self, PyObject *exception)
2758+
/*[clinic end generated code: output=96a91790c192cc7d input=9a8f65c83dcf893a]*/
27592759
{
27602760
PyErr_SetString(PyExc_RuntimeError,
27612761
"Task does not support set_exception operation");

Modules/_collectionsmodule.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -484,7 +484,7 @@ deque_extend_impl(dequeobject *deque, PyObject *iterable)
484484
PyObject *s = PySequence_List(iterable);
485485
if (s == NULL)
486486
return NULL;
487-
result = deque_extend(deque, s);
487+
result = deque_extend((PyObject*)deque, s);
488488
Py_DECREF(s);
489489
return result;
490490
}
@@ -578,7 +578,7 @@ deque_inplace_concat(PyObject *self, PyObject *other)
578578
PyObject *result;
579579

580580
// deque_extend is thread-safe
581-
result = deque_extend(deque, other);
581+
result = deque_extend((PyObject*)deque, other);
582582
if (result == NULL)
583583
return result;
584584
Py_INCREF(deque);

Modules/_cursesmodule.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -2309,8 +2309,8 @@ This information can be later retrieved using the getwin() function.
23092309
[clinic start generated code]*/
23102310

23112311
static PyObject *
2312-
_curses_window_putwin(PyCursesWindowObject *self, PyObject *file)
2313-
/*[clinic end generated code: output=3a25e2a5e7a040ac input=0608648e09c8ea0a]*/
2312+
_curses_window_putwin_impl(PyCursesWindowObject *self, PyObject *file)
2313+
/*[clinic end generated code: output=fdae68ac59b0281b input=0608648e09c8ea0a]*/
23142314
{
23152315
/* We have to simulate this by writing to a temporary FILE*,
23162316
then reading back, then writing to the argument file. */

Modules/_elementtree.c

+12-10
Original file line numberDiff line numberDiff line change
@@ -2951,8 +2951,8 @@ _elementtree.TreeBuilder.data
29512951
[clinic start generated code]*/
29522952

29532953
static PyObject *
2954-
_elementtree_TreeBuilder_data(TreeBuilderObject *self, PyObject *data)
2955-
/*[clinic end generated code: output=69144c7100795bb2 input=a0540c532b284d29]*/
2954+
_elementtree_TreeBuilder_data_impl(TreeBuilderObject *self, PyObject *data)
2955+
/*[clinic end generated code: output=dfa02b68f732b8c0 input=a0540c532b284d29]*/
29562956
{
29572957
return treebuilder_handle_data(self, data);
29582958
}
@@ -2966,8 +2966,8 @@ _elementtree.TreeBuilder.end
29662966
[clinic start generated code]*/
29672967

29682968
static PyObject *
2969-
_elementtree_TreeBuilder_end(TreeBuilderObject *self, PyObject *tag)
2970-
/*[clinic end generated code: output=9a98727cc691cd9d input=22dc3674236f5745]*/
2969+
_elementtree_TreeBuilder_end_impl(TreeBuilderObject *self, PyObject *tag)
2970+
/*[clinic end generated code: output=84cb6ca9008ec740 input=22dc3674236f5745]*/
29712971
{
29722972
return treebuilder_handle_end(self, tag);
29732973
}
@@ -2981,8 +2981,9 @@ _elementtree.TreeBuilder.comment
29812981
[clinic start generated code]*/
29822982

29832983
static PyObject *
2984-
_elementtree_TreeBuilder_comment(TreeBuilderObject *self, PyObject *text)
2985-
/*[clinic end generated code: output=22835be41deeaa27 input=47e7ebc48ed01dfa]*/
2984+
_elementtree_TreeBuilder_comment_impl(TreeBuilderObject *self,
2985+
PyObject *text)
2986+
/*[clinic end generated code: output=a555ef39027c3823 input=47e7ebc48ed01dfa]*/
29862987
{
29872988
return treebuilder_handle_comment(self, text);
29882989
}
@@ -3949,8 +3950,8 @@ _elementtree.XMLParser.feed
39493950
[clinic start generated code]*/
39503951

39513952
static PyObject *
3952-
_elementtree_XMLParser_feed(XMLParserObject *self, PyObject *data)
3953-
/*[clinic end generated code: output=e42b6a78eec7446d input=fe231b6b8de3ce1f]*/
3953+
_elementtree_XMLParser_feed_impl(XMLParserObject *self, PyObject *data)
3954+
/*[clinic end generated code: output=503e6fbf1adf17ab input=fe231b6b8de3ce1f]*/
39543955
{
39553956
/* feed data to parser */
39563957

@@ -3997,8 +3998,9 @@ _elementtree.XMLParser._parse_whole
39973998
[clinic start generated code]*/
39983999

39994000
static PyObject *
4000-
_elementtree_XMLParser__parse_whole(XMLParserObject *self, PyObject *file)
4001-
/*[clinic end generated code: output=f797197bb818dda3 input=19ecc893b6f3e752]*/
4001+
_elementtree_XMLParser__parse_whole_impl(XMLParserObject *self,
4002+
PyObject *file)
4003+
/*[clinic end generated code: output=60718a4e63d237d2 input=19ecc893b6f3e752]*/
40024004
{
40034005
/* (internal) parse the whole input, until end of stream */
40044006
PyObject* reader;

Modules/_hashopenssl.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -645,8 +645,8 @@ Update this hash object's state with the provided string.
645645
[clinic start generated code]*/
646646

647647
static PyObject *
648-
EVP_update(EVPobject *self, PyObject *obj)
649-
/*[clinic end generated code: output=ec1d55ed2432e966 input=9b30ec848f015501]*/
648+
EVP_update_impl(EVPobject *self, PyObject *obj)
649+
/*[clinic end generated code: output=d56f91c68348f95f input=9b30ec848f015501]*/
650650
{
651651
int result;
652652
Py_buffer view;

Modules/_io/bufferedio.c

+3-3
Original file line numberDiff line numberDiff line change
@@ -472,8 +472,8 @@ _io._Buffered._dealloc_warn
472472
[clinic start generated code]*/
473473

474474
static PyObject *
475-
_io__Buffered__dealloc_warn(buffered *self, PyObject *source)
476-
/*[clinic end generated code: output=690dcc3df8967162 input=8f845f2a4786391c]*/
475+
_io__Buffered__dealloc_warn_impl(buffered *self, PyObject *source)
476+
/*[clinic end generated code: output=d8db21c6dec0e614 input=8f845f2a4786391c]*/
477477
{
478478
if (self->ok && self->raw) {
479479
PyObject *r;
@@ -560,7 +560,7 @@ _io__Buffered_close_impl(buffered *self)
560560
}
561561

562562
if (self->finalizing) {
563-
PyObject *r = _io__Buffered__dealloc_warn(self, (PyObject *) self);
563+
PyObject *r = _io__Buffered__dealloc_warn_impl(self, (PyObject *)self);
564564
if (r)
565565
Py_DECREF(r);
566566
else

Modules/_io/bytesio.c

+6-6
Original file line numberDiff line numberDiff line change
@@ -710,8 +710,8 @@ Return the number of bytes written.
710710
[clinic start generated code]*/
711711

712712
static PyObject *
713-
_io_BytesIO_write(bytesio *self, PyObject *b)
714-
/*[clinic end generated code: output=53316d99800a0b95 input=f5ec7c8c64ed720a]*/
713+
_io_BytesIO_write_impl(bytesio *self, PyObject *b)
714+
/*[clinic end generated code: output=d3e46bcec8d9e21c input=f5ec7c8c64ed720a]*/
715715
{
716716
Py_ssize_t n = write_bytes(self, b);
717717
return n >= 0 ? PyLong_FromSsize_t(n) : NULL;
@@ -730,8 +730,8 @@ each element.
730730
[clinic start generated code]*/
731731

732732
static PyObject *
733-
_io_BytesIO_writelines(bytesio *self, PyObject *lines)
734-
/*[clinic end generated code: output=7f33aa3271c91752 input=e972539176fc8fc1]*/
733+
_io_BytesIO_writelines_impl(bytesio *self, PyObject *lines)
734+
/*[clinic end generated code: output=03a43a75773bc397 input=e972539176fc8fc1]*/
735735
{
736736
PyObject *it, *item;
737737

@@ -842,7 +842,7 @@ bytesio_setstate(PyObject *op, PyObject *state)
842842

843843
/* Set the value of the internal buffer. If state[0] does not support the
844844
buffer protocol, bytesio_write will raise the appropriate TypeError. */
845-
result = _io_BytesIO_write(self, PyTuple_GET_ITEM(state, 0));
845+
result = _io_BytesIO_write_impl(self, PyTuple_GET_ITEM(state, 0));
846846
if (result == NULL)
847847
return NULL;
848848
Py_DECREF(result);
@@ -958,7 +958,7 @@ _io_BytesIO___init___impl(bytesio *self, PyObject *initvalue)
958958
}
959959
else {
960960
PyObject *res;
961-
res = _io_BytesIO_write(self, initvalue);
961+
res = _io_BytesIO_write_impl(self, initvalue);
962962
if (res == NULL)
963963
return -1;
964964
Py_DECREF(res);

Modules/_io/clinic/bufferedio.c.h

+14-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Modules/_io/clinic/bytesio.c.h

+27-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Modules/_io/clinic/stringio.c.h

+3-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Modules/_io/clinic/textio.c.h

+15-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Modules/_io/textio.c

+3-3
Original file line numberDiff line numberDiff line change
@@ -579,9 +579,9 @@ _io.IncrementalNewlineDecoder.setstate
579579
[clinic start generated code]*/
580580

581581
static PyObject *
582-
_io_IncrementalNewlineDecoder_setstate(nldecoder_object *self,
583-
PyObject *state)
584-
/*[clinic end generated code: output=c10c622508b576cb input=c53fb505a76dbbe2]*/
582+
_io_IncrementalNewlineDecoder_setstate_impl(nldecoder_object *self,
583+
PyObject *state)
584+
/*[clinic end generated code: output=09135cb6e78a1dc8 input=c53fb505a76dbbe2]*/
585585
{
586586
PyObject *buffer;
587587
unsigned long long flag;

Modules/_sqlite/clinic/connection.c.h

+15-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Modules/_sqlite/clinic/cursor.c.h

+14-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Modules/_sqlite/connection.c

+3-3
Original file line numberDiff line numberDiff line change
@@ -1908,9 +1908,9 @@ Executes multiple SQL statements at once.
19081908
[clinic start generated code]*/
19091909

19101910
static PyObject *
1911-
pysqlite_connection_executescript(pysqlite_Connection *self,
1912-
PyObject *script_obj)
1913-
/*[clinic end generated code: output=4c4f9d77aa0ae37d input=f6e5f1ccfa313db4]*/
1911+
pysqlite_connection_executescript_impl(pysqlite_Connection *self,
1912+
PyObject *script_obj)
1913+
/*[clinic end generated code: output=e921c49e2291782c input=f6e5f1ccfa313db4]*/
19141914
{
19151915
PyObject* result = 0;
19161916

0 commit comments

Comments
 (0)