Fix segfault attempting illegal javaclassname and csclassname special variable substitution
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@12058 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
71dddaa2de
commit
7b2c6b477a
4 changed files with 24 additions and 4 deletions
|
|
@ -101,3 +101,12 @@ Number times12(const Number* num) {
|
||||||
%inline %{
|
%inline %{
|
||||||
int myInt = 0;
|
int myInt = 0;
|
||||||
%}
|
%}
|
||||||
|
|
||||||
|
|
||||||
|
// Illegal special variable crash
|
||||||
|
%typemap(cstype) WasCrashing "$csclassname /*cstype $*csclassname*/" // $*csclassname was causing crash
|
||||||
|
%inline %{
|
||||||
|
struct WasCrashing {};
|
||||||
|
void hoop(WasCrashing was) {}
|
||||||
|
%}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -63,3 +63,10 @@ class Farewell {};
|
||||||
Greeting* solong(Farewell* f) { return NULL; }
|
Greeting* solong(Farewell* f) { return NULL; }
|
||||||
%}
|
%}
|
||||||
|
|
||||||
|
// Illegal special variable crash
|
||||||
|
%typemap(jstype) WasCrashing "$javaclassname /*jstype $*javaclassname*/" // $*javaclassname was causing crash
|
||||||
|
%inline %{
|
||||||
|
struct WasCrashing {};
|
||||||
|
void hoop(WasCrashing was) {}
|
||||||
|
%}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3085,8 +3085,10 @@ public:
|
||||||
if (Strstr(tm, "$*csclassname")) {
|
if (Strstr(tm, "$*csclassname")) {
|
||||||
SwigType *classnametype = Copy(strippedtype);
|
SwigType *classnametype = Copy(strippedtype);
|
||||||
Delete(SwigType_pop(classnametype));
|
Delete(SwigType_pop(classnametype));
|
||||||
substituteClassnameSpecialVariable(classnametype, tm, "$*csclassname");
|
if (Len(classnametype) > 0) {
|
||||||
substitution_performed = true;
|
substituteClassnameSpecialVariable(classnametype, tm, "$*csclassname");
|
||||||
|
substitution_performed = true;
|
||||||
|
}
|
||||||
Delete(classnametype);
|
Delete(classnametype);
|
||||||
}
|
}
|
||||||
if (Strstr(tm, "$&csclassname")) {
|
if (Strstr(tm, "$&csclassname")) {
|
||||||
|
|
|
||||||
|
|
@ -2943,8 +2943,10 @@ public:
|
||||||
if (Strstr(tm, "$*javaclassname")) {
|
if (Strstr(tm, "$*javaclassname")) {
|
||||||
SwigType *classnametype = Copy(strippedtype);
|
SwigType *classnametype = Copy(strippedtype);
|
||||||
Delete(SwigType_pop(classnametype));
|
Delete(SwigType_pop(classnametype));
|
||||||
substituteClassnameSpecialVariable(classnametype, tm, "$*javaclassname", jnidescriptor);
|
if (Len(classnametype) > 0) {
|
||||||
substitution_performed = true;
|
substituteClassnameSpecialVariable(classnametype, tm, "$*javaclassname", jnidescriptor);
|
||||||
|
substitution_performed = true;
|
||||||
|
}
|
||||||
Delete(classnametype);
|
Delete(classnametype);
|
||||||
}
|
}
|
||||||
if (Strstr(tm, "$&javaclassname")) {
|
if (Strstr(tm, "$&javaclassname")) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue