From: <wsf...@us...> - 2008-12-22 22:56:36
|
Revision: 10997 http://swig.svn.sourceforge.net/swig/?rev=10997&view=rev Author: wsfulton Date: 2008-12-22 21:43:48 +0000 (Mon, 22 Dec 2008) Log Message: ----------- Fix #2432801 - Make SwigValueWrapper exception safe for when copy constructors throw exceptions Modified Paths: -------------- trunk/CHANGES.current trunk/Lib/swig.swg Modified: trunk/CHANGES.current =================================================================== --- trunk/CHANGES.current 2008-12-21 23:16:56 UTC (rev 10996) +++ trunk/CHANGES.current 2008-12-22 21:43:48 UTC (rev 10997) @@ -1,6 +1,10 @@ Version 1.3.37 (in progress) ============================ +2008-12-22: wsfulton + Fix #2432801 - Make SwigValueWrapper exception safe for when copy constructors + throw exceptions. + 2008-12-21: wsfulton Apply patch #2440046 which fixes possible seg faults for member and global variable char arrays when the strings are larger than the string array size. Modified: trunk/Lib/swig.swg =================================================================== --- trunk/Lib/swig.swg 2008-12-21 23:16:56 UTC (rev 10996) +++ trunk/Lib/swig.swg 2008-12-22 21:43:48 UTC (rev 10997) @@ -647,7 +647,7 @@ SwigValueWrapper(const SwigValueWrapper<T>& rhs) : tt(new T(*rhs.tt)) { } SwigValueWrapper(const T& t) : tt(new T(t)) { } ~SwigValueWrapper() { delete tt; } - SwigValueWrapper& operator=(const T& t) { delete tt; tt = new T(t); return *this; } + SwigValueWrapper& operator=(const T& t) { T *oldtt = tt; tt = 0; delete oldtt; tt = new T(t); return *this; } operator T&() const { return *tt; } T *operator&() { return tt; } private: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |