From ae17b28410d23d320920dd0b71c20c690f0c0db7 Mon Sep 17 00:00:00 2001 From: William S Fulton Date: Thu, 28 Apr 2005 21:56:08 +0000 Subject: [PATCH] no message git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@7170 626c5289-ae23-0410-ae9c-e8d60b6d4f22 --- CHANGES.current | 39 +++++++++++++++++++++++++++++++++++++++ TODO | 3 --- 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/CHANGES.current b/CHANGES.current index 0cd47004c..3bc150e9c 100644 --- a/CHANGES.current +++ b/CHANGES.current @@ -1,6 +1,43 @@ Version 1.3.25 (In progress) ============================ +04/28/2005: wsfulton + [C#] Fixed problems due to the over eager garbage collector. Occasionally the + garbage collector would collect a C# proxy class instance while it was being used + in unmanaged code if the object was passed as a parameter to a wrapped function. + Needless to say this caused havoc as the C# proxy class calls the C++ destructor + when it is collected. Proxy classes and type wrapper classes now use a HandleRef, + which holds an IntPtr, instead of a plain IntPtr to marshal the C++ pointer to unmanaged + code. There doesn't appear to be any performance degradation as a result of this + modification. + + The changes are in the proxy and type wrapper classes. The swigCPtr is now of type HandleRef + instead of IntPtr and consequently the getCPtr method return type has also changed. The net + effect is that any custom written typemaps might have to be modified to suite. Affected users + should note that the implementation uses the new 'out' attribute in the imtype typemap as the + input type is now a HandleRef and the output type is still an IntPtr. + + *** POTENTIAL INCOMPATIBILITY FOR C# MODULE *** + +04/28/2005: wsfulton + [C#] Support for asymmetric type marshalling added. Sometimes the output type needs to be + different to the input type. Support for this comes in the form of a new optional 'out' + attribute for the ctype, imtype and cstype typemaps. If this typemap attribute is not + specified, then the type used for both input and output is the type specified in the + typemap, as has always previously been the case. If this typemap attribute is specified, + then the type specified in the attribute is used for output types and the type specified + in the typemap itself is used for the input type. An output type is a return value from + a wrapped method or wrapped constant and an input type is a parameter in a wrapped method. + + An example shows that char * could be marshalled in different ways, + + %typemap(imtype, out="IntPtr") char * "string" + char * function(char *); + + The output type is thus IntPtr and the input type is string. The resulting intermediary C# code is: + + public static extern IntPtr function(string jarg1); + 04/22/2005: mkoeppe (Matthias Koeppe) [Guile] Fix generation of "define-method" for methods of classes with a constructor. Reported by Luigi Ballabio. @@ -178,6 +215,8 @@ Version 1.3.25 (In progress) SystemException, ArgumentException, ArgumentNullException and ArgumentOutOfRangeException. + *** POTENTIAL INCOMPATIBILITY FOR C# MODULE *** + 05/05/2005: mmatus Fix several memory leaks around. Even when we survive knowning diff --git a/TODO b/TODO index adb76c1b1..2ac0d4d2e 100644 --- a/TODO +++ b/TODO @@ -209,9 +209,6 @@ C# *** Implement director support for C# so that virtual methods work seemlessly when mixing C# and C++ code. -**** Fix exception handling. Currently memory leaks occur when a C# exception - is thrown from C/C++. - PHP ---