diff --git a/CHANGES.current b/CHANGES.current index 01944f978..1b5cbe4de 100644 --- a/CHANGES.current +++ b/CHANGES.current @@ -5,6 +5,9 @@ See the RELEASENOTES file for a summary of changes in each release. Version 2.0.5 (in progress) =========================== +2012-04-13: wsfulton + Apply patch #3511009 from Leif Middelschulte for slightly optimised char * variable wrappers. + 2012-04-13: wsfulton [Lua] Apply #3219676 from Shane Liesegang which adds: - support for %factory diff --git a/Lib/swig.swg b/Lib/swig.swg index b47d4ff2c..fdcd4e5de 100644 --- a/Lib/swig.swg +++ b/Lib/swig.swg @@ -359,7 +359,7 @@ namespace std { #ifdef __cplusplus %typemap(memberin) char * { - if ($1) delete [] $1; + delete [] $1; if ($input) { $1 = ($1_type) (new char[strlen((const char *)$input)+1]); strcpy((char *)$1, (const char *)$input); @@ -376,7 +376,7 @@ namespace std { } } %typemap(globalin) char * { - if ($1) delete [] $1; + delete [] $1; if ($input) { $1 = ($1_type) (new char[strlen((const char *)$input)+1]); strcpy((char *)$1, (const char *)$input); @@ -394,11 +394,11 @@ namespace std { } #else %typemap(memberin) char * { - if ($1) free((char *)$1); if ($input) { - $1 = ($1_type) malloc(strlen((const char *)$input)+1); + $1 = ($1_type) realloc($1, strlen((const char *)$input)+1); strcpy((char *)$1, (const char *)$input); } else { + free($1); $1 = 0; } } @@ -411,11 +411,11 @@ namespace std { } } %typemap(globalin) char * { - if ($1) free((char *)$1); if ($input) { - $1 = ($1_type) malloc(strlen((const char *)$input)+1); + $1 = ($1_type) realloc($1, strlen((const char *)$input)+1); strcpy((char *)$1, (const char *)$input); } else { + free ($1); $1 = 0; } }