Use SWIG-specific for non-overloaded synthesized functions too
This avoids conflicts between such functions, which are generated when using %extend to add static methods to an existing class, and the actual wrapper functions generated by the backend. This shouldn't result in any user-visible changes.
This commit is contained in:
parent
119222be77
commit
26bf86322b
2 changed files with 15 additions and 3 deletions
|
|
@ -1321,8 +1321,11 @@ int Language::staticmemberfunctionHandler(Node *n) {
|
|||
mrename = mangled;
|
||||
|
||||
if (code) {
|
||||
// See Swig_MethodToFunction() for the explanation of this code.
|
||||
if (Getattr(n, "sym:overloaded")) {
|
||||
Append(cname, Getattr(defaultargs ? defaultargs : n, "sym:overname"));
|
||||
} else {
|
||||
Append(cname, "__SWIG");
|
||||
}
|
||||
|
||||
if (!defaultargs) {
|
||||
|
|
|
|||
|
|
@ -1076,9 +1076,18 @@ int Swig_MethodToFunction(Node *n, const_String_or_char_ptr nspace, String *clas
|
|||
|
||||
/* Check if the method is overloaded. If so, and it has code attached, we append an extra suffix
|
||||
to avoid a name-clash in the generated wrappers. This allows overloaded methods to be defined
|
||||
in C. */
|
||||
if (Getattr(n, "sym:overloaded") && code) {
|
||||
Append(mangled, Getattr(defaultargs ? defaultargs : n, "sym:overname"));
|
||||
in C.
|
||||
|
||||
But when not using the suffix used for overloaded functions, we still need to ensure that the
|
||||
wrapper name doesn't conflict with any wrapper functions, so make it sufficiently unique by
|
||||
appending a suffix similar to the one used for overloaded functions to it.
|
||||
*/
|
||||
if (code) {
|
||||
if (Getattr(n, "sym:overloaded")) {
|
||||
Append(mangled, Getattr(defaultargs ? defaultargs : n, "sym:overname"));
|
||||
} else {
|
||||
Append(mangled, "__SWIG");
|
||||
}
|
||||
}
|
||||
|
||||
/* See if there is any code that we need to emit */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue