diff options
-rw-r--r-- | Source/CParse/parser.y | 3 | ||||
-rw-r--r-- | Source/Modules/lang.cxx | 5 |
2 files changed, 5 insertions, 3 deletions
diff --git a/Source/CParse/parser.y b/Source/CParse/parser.y index 68d2c7eb6..0536f4c34 100644 --- a/Source/CParse/parser.y +++ b/Source/CParse/parser.y @@ -372,7 +372,8 @@ static void add_symbols(Node *n) { } if (extendmode) { - Setattr(n,"isextendmember","1"); + if (!Getattr(n, "template")) + SetFlag(n,"isextendmember"); } if (!isfriend && inclass) { diff --git a/Source/Modules/lang.cxx b/Source/Modules/lang.cxx index 5dad125e0..ab4fa2b9e 100644 --- a/Source/Modules/lang.cxx +++ b/Source/Modules/lang.cxx @@ -1267,8 +1267,9 @@ int Language::memberfunctionHandler(Node *n) { if (GetFlag(n, "explicitcall")) DirectorExtraCall = CWRAP_DIRECTOR_ONE_CALL; - Swig_MethodToFunction(n, NSpace, ClassType, Getattr(n, "template") ? Extend | SmartPointer : Extend | SmartPointer | DirectorExtraCall, director_type, - is_member_director(CurrentClass, n)); + int extendmember = GetFlag(n, "isextendmember") ? Extend : 0; + int flags = Getattr(n, "template") ? extendmember | SmartPointer : Extend | SmartPointer | DirectorExtraCall; + Swig_MethodToFunction(n, NSpace, ClassType, flags, director_type, is_member_director(CurrentClass, n)); Setattr(n, "sym:name", fname); functionWrapper(n); |