From ae3a7f4dacf2a8db5ec3ba87b5ff342a348af310 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stephan=20A=C3=9Fmus?= Date: Fri, 17 Aug 2007 16:24:43 +0000 Subject: [PATCH] * don't leak the rect data in case of failed realloc() git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22006 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/kits/interface/Region.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/kits/interface/Region.cpp b/src/kits/interface/Region.cpp index 0b2d8819e5..b75f5ecb1b 100644 --- a/src/kits/interface/Region.cpp +++ b/src/kits/interface/Region.cpp @@ -471,9 +471,15 @@ BRegion::_SetSize(long newSize) if (fData == &fBounds) { fData = (clipping_rect*)malloc(newSize * sizeof(clipping_rect)); fData[0] = fBounds; - } else if (fData) - fData = (clipping_rect*)realloc(fData, newSize * sizeof(clipping_rect)); - else + } else if (fData) { + clipping_rect* resizedData = (clipping_rect*)realloc(fData, + newSize * sizeof(clipping_rect)); + if (!resizedData) { + free(fData); + fData = NULL; + } else + fData = resizedData; + } else fData = (clipping_rect*)malloc(newSize * sizeof(clipping_rect)); } else { // just an empty region, but no error