From 8adb6b937242b3a3c86cbb6d70c204758ff4d431 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 20 Jun 2007 00:13:57 +0000 Subject: [PATCH] don't free "static" alpha data (patch 1738966) [backport from HEAD] git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_8_BRANCH@46549 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- docs/changes.txt | 1 + src/common/image.cpp | 9 +++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index dc61983178..3ca125c2e0 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -99,6 +99,7 @@ All (GUI): enough to select half of a character (Michael Hieke) - Significantly improved startup times of XRC-based applications using embedded resources on Unix (requires resources recompilation) +- Fixed freeing of "static" alpha data in wxImage (Axel Gembe) wxMSW: diff --git a/src/common/image.cpp b/src/common/image.cpp index 80e2fd7c66..cd5216d461 100644 --- a/src/common/image.cpp +++ b/src/common/image.cpp @@ -1671,7 +1671,9 @@ void wxImage::SetAlpha( unsigned char *alpha, bool static_data ) alpha = (unsigned char *)malloc(M_IMGDATA->m_width*M_IMGDATA->m_height); } - free(M_IMGDATA->m_alpha); + if( !M_IMGDATA->m_staticAlpha ) + free(M_IMGDATA->m_alpha); + M_IMGDATA->m_alpha = alpha; M_IMGDATA->m_staticAlpha = static_data; } @@ -1904,8 +1906,11 @@ bool wxImage::ConvertAlphaToMask(unsigned char threshold) } } - free(M_IMGDATA->m_alpha); + if( !M_IMGDATA->m_staticAlpha ) + free(M_IMGDATA->m_alpha); + M_IMGDATA->m_alpha = NULL; + M_IMGDATA->m_staticAlpha = false; return true; }