mirror of https://github.com/swig/swig
Fix assert handling enums with same name in different namespaces.
This commit is contained in:
parent
dc11837c64
commit
e6846ac8f3
|
@ -7,6 +7,10 @@ the issue number to the end of the URL: https://github.com/swig/swig/issues/
|
|||
Version 4.2.1 (in progress)
|
||||
===========================
|
||||
|
||||
2024-02-03: wsfulton
|
||||
#1897 [C#, Java] Fix crash handling enums with same name in different
|
||||
namespaces.
|
||||
|
||||
2024-02-01: wsfulton
|
||||
#2781 Correctly report line number warnings/errors for base classes that
|
||||
are templates.
|
||||
|
@ -20,7 +24,7 @@ Version 4.2.1 (in progress)
|
|||
functype: ssizeobjargproc and ternaryfunc.
|
||||
|
||||
2024-01-31: olly
|
||||
[java] #2766 Fix segfault trying to wrap a constant whose type is unknown
|
||||
[Java] #2766 Fix segfault trying to wrap a constant whose type is unknown
|
||||
to SWIG with "%javaconst(1);" enabled.
|
||||
|
||||
2024-01-31: wsfulton
|
||||
|
@ -53,7 +57,7 @@ Version 4.2.1 (in progress)
|
|||
#2749 Fix seg fault handling friend constructor/destructor declarations.
|
||||
|
||||
2024-01-12: olly
|
||||
[Ruby,Tcl] #2751 Fix -external-runtime output to define
|
||||
[Ruby, Tcl] #2751 Fix -external-runtime output to define
|
||||
SWIG_snprintf (bug introduced in 4.2.0).
|
||||
|
||||
2024-01-12: olly
|
||||
|
|
|
@ -1176,21 +1176,6 @@ public:
|
|||
return SWIG_NOWRAP;
|
||||
|
||||
String *nspace = Getattr(n, "sym:nspace"); // NSpace/getNSpace() only works during Language::enumDeclaration call
|
||||
if (proxy_flag && !is_wrapping_class()) {
|
||||
// Global enums / enums in a namespace
|
||||
assert(!full_imclass_name);
|
||||
|
||||
if (!nspace) {
|
||||
full_imclass_name = NewStringf("%s", imclass_name);
|
||||
} else {
|
||||
if (namespce) {
|
||||
full_imclass_name = NewStringf("%s.%s", namespce, imclass_name);
|
||||
} else {
|
||||
full_imclass_name = NewStringf("%s", imclass_name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
enum_code = NewString("");
|
||||
String *symname = Getattr(n, "sym:name");
|
||||
String *constants_code = (proxy_flag && is_wrapping_class())? proxy_class_constants_code : module_class_constants_code;
|
||||
|
@ -1243,9 +1228,29 @@ public:
|
|||
Printf(constants_code, " // %s \n", symname);
|
||||
}
|
||||
|
||||
if (proxy_flag && !is_wrapping_class()) {
|
||||
// Global enums / enums in a namespace
|
||||
assert(!full_imclass_name);
|
||||
|
||||
if (!nspace) {
|
||||
full_imclass_name = NewStringf("%s", imclass_name);
|
||||
} else {
|
||||
if (namespce) {
|
||||
full_imclass_name = NewStringf("%s.%s", namespce, imclass_name);
|
||||
} else {
|
||||
full_imclass_name = NewStringf("%s", imclass_name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Emit each enum item
|
||||
Language::enumDeclaration(n);
|
||||
|
||||
if (proxy_flag && !is_wrapping_class()) {
|
||||
Delete(full_imclass_name);
|
||||
full_imclass_name = 0;
|
||||
}
|
||||
|
||||
if ((enum_feature != SimpleEnum) && symname && typemap_lookup_type) {
|
||||
// Wrap (non-anonymous) C/C++ enum within a typesafe, typeunsafe or proper C# enum
|
||||
// Finish the enum declaration
|
||||
|
@ -1297,11 +1302,6 @@ public:
|
|||
|
||||
Delete(enum_code);
|
||||
enum_code = NULL;
|
||||
|
||||
if (proxy_flag && !is_wrapping_class()) {
|
||||
Delete(full_imclass_name);
|
||||
full_imclass_name = 0;
|
||||
}
|
||||
}
|
||||
return SWIG_OK;
|
||||
}
|
||||
|
|
|
@ -1245,11 +1245,6 @@ public:
|
|||
return SWIG_NOWRAP;
|
||||
|
||||
String *nspace = Getattr(n, "sym:nspace"); // NSpace/getNSpace() only works during Language::enumDeclaration call
|
||||
if (proxy_flag && !is_wrapping_class()) {
|
||||
// Global enums / enums in a namespace
|
||||
assert(!full_imclass_name);
|
||||
constructIntermediateClassName(n);
|
||||
}
|
||||
|
||||
enum_code = NewString("");
|
||||
String *symname = Getattr(n, "sym:name");
|
||||
|
@ -1300,9 +1295,20 @@ public:
|
|||
}
|
||||
}
|
||||
|
||||
if (proxy_flag && !is_wrapping_class()) {
|
||||
// Global enums / enums in a namespace
|
||||
assert(!full_imclass_name);
|
||||
constructIntermediateClassName(n);
|
||||
}
|
||||
|
||||
// Emit each enum item
|
||||
Language::enumDeclaration(n);
|
||||
|
||||
if (proxy_flag && !is_wrapping_class()) {
|
||||
Delete(full_imclass_name);
|
||||
full_imclass_name = 0;
|
||||
}
|
||||
|
||||
if ((enum_feature != SimpleEnum) && symname && typemap_lookup_type) {
|
||||
// Wrap (non-anonymous) C/C++ enum within a typesafe, typeunsafe or proper Java enum
|
||||
// Finish the enum declaration
|
||||
|
@ -1369,11 +1375,6 @@ public:
|
|||
|
||||
Delete(enum_code);
|
||||
enum_code = NULL;
|
||||
|
||||
if (proxy_flag && !is_wrapping_class()) {
|
||||
Delete(full_imclass_name);
|
||||
full_imclass_name = 0;
|
||||
}
|
||||
}
|
||||
return SWIG_OK;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue