bpo-31926: fix missing *_METHODDEF statements by argument clinic (#4230)
When a single .c file contains several functions and/or methods with the same name, a safety _METHODDEF #define statement is generated only for one of them. This fixes the bug by using the full name of the function to avoid duplicates rather than just the name.
This commit is contained in:
parent
700d2e4755
commit
4f57409a2f
|
@ -0,0 +1,2 @@
|
|||
Fixed Argument Clinic sometimes causing compilation errors when there was
|
||||
more than one function and/or method in a .c file with the same name.
|
|
@ -467,4 +467,8 @@ exit:
|
|||
#ifndef ZLIB_COMPRESS_COPY_METHODDEF
|
||||
#define ZLIB_COMPRESS_COPY_METHODDEF
|
||||
#endif /* !defined(ZLIB_COMPRESS_COPY_METHODDEF) */
|
||||
/*[clinic end generated code: output=e0184313eb431e95 input=a9049054013a1b77]*/
|
||||
|
||||
#ifndef ZLIB_DECOMPRESS_COPY_METHODDEF
|
||||
#define ZLIB_DECOMPRESS_COPY_METHODDEF
|
||||
#endif /* !defined(ZLIB_DECOMPRESS_COPY_METHODDEF) */
|
||||
/*[clinic end generated code: output=6378d429f0819817 input=a9049054013a1b77]*/
|
||||
|
|
|
@ -1138,9 +1138,7 @@ static PyMethodDef comp_methods[] =
|
|||
{
|
||||
ZLIB_COMPRESS_COMPRESS_METHODDEF
|
||||
ZLIB_COMPRESS_FLUSH_METHODDEF
|
||||
#ifdef HAVE_ZLIB_COPY
|
||||
ZLIB_COMPRESS_COPY_METHODDEF
|
||||
#endif
|
||||
{NULL, NULL}
|
||||
};
|
||||
|
||||
|
@ -1148,9 +1146,7 @@ static PyMethodDef Decomp_methods[] =
|
|||
{
|
||||
ZLIB_DECOMPRESS_DECOMPRESS_METHODDEF
|
||||
ZLIB_DECOMPRESS_FLUSH_METHODDEF
|
||||
#ifdef HAVE_ZLIB_COPY
|
||||
ZLIB_DECOMPRESS_COPY_METHODDEF
|
||||
#endif
|
||||
{NULL, NULL}
|
||||
};
|
||||
|
||||
|
|
|
@ -957,8 +957,8 @@ class CLanguage(Language):
|
|||
cpp_if = "#if " + conditional
|
||||
cpp_endif = "#endif /* " + conditional + " */"
|
||||
|
||||
if methoddef_define and f.name not in clinic.ifndef_symbols:
|
||||
clinic.ifndef_symbols.add(f.name)
|
||||
if methoddef_define and f.full_name not in clinic.ifndef_symbols:
|
||||
clinic.ifndef_symbols.add(f.full_name)
|
||||
methoddef_ifndef = normalize_snippet("""
|
||||
#ifndef {methoddef_name}
|
||||
#define {methoddef_name}
|
||||
|
|
Loading…
Reference in New Issue