emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] emacs-24 5fc8210: Backport: Memory leak fix and 19133 fix.


From: Jan D.
Subject: [Emacs-diffs] emacs-24 5fc8210: Backport: Memory leak fix and 19133 fix.
Date: Wed, 24 Dec 2014 11:24:24 +0000

branch: emacs-24
commit 5fc82109bab6f51d8be7134f1368f14c628794e9
Author: Jan D <address@hidden>
Commit: Jan D <address@hidden>

    Backport: Memory leak fix and 19133 fix.
    
    Fixes: debbugs:19133
    
    * nsimage.m (allocInitFromFile:): Initialize bmRep.
    (dealloc): Release bmRep.
    (setPixmapData): Make bmRep local so class member is not
    set.
---
 src/ChangeLog |    9 ++++++++-
 src/nsimage.m |    5 ++++-
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/src/ChangeLog b/src/ChangeLog
index f98afd80..530b913 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,4 +1,11 @@
-2014-11-02  Jan Djärv  <address@hidden>
+2014-12-24  Jan Djärv  <address@hidden>
+
+       * nsimage.m (allocInitFromFile:): Initialize bmRep.
+       (dealloc): Release bmRep.
+        (setPixmapData): Make bmRep local so class member is not
+        set (Bug#19133).
+
+2014-12-24  Jan Djärv  <address@hidden>
 
        * nsterm.h (EmacsImage): Remove imageListNext, refCount, reference,
        imageListSetNext, imageListNext.
diff --git a/src/nsimage.m b/src/nsimage.m
index cb29bf1..a625f20 100644
--- a/src/nsimage.m
+++ b/src/nsimage.m
@@ -174,6 +174,7 @@ ns_set_alpha (void *img, int x, int y, unsigned char a)
   image = [[EmacsImage alloc] initByReferencingFile:
                      [NSString stringWithUTF8String: SSDATA (found)]];
 
+  image->bmRep = nil;
 #if defined (NS_IMPL_COCOA) && MAC_OS_X_VERSION_MAX_ALLOWED >= 
MAC_OS_X_VERSION_10_6
   imgRep = [NSBitmapImageRep imageRepWithData:[image TIFFRepresentation]];
 #else
@@ -199,6 +200,7 @@ ns_set_alpha (void *img, int x, int y, unsigned char a)
 - (void)dealloc
 {
   [stippleMask release];
+  [bmRep release];
   [super dealloc];
 }
 
@@ -245,6 +247,7 @@ ns_set_alpha (void *img, int x, int y, unsigned char a)
               if (s >= bits + length)
                 {
                   [bmRep release];
+                  bmRep = nil;
                   return nil;
                 }
 #define hexchar(x) ('0' <= (x) && (x) <= '9' ? (x) - '0' : (x) - 'a' + 10)
@@ -348,7 +351,7 @@ ns_set_alpha (void *img, int x, int y, unsigned char a)
     {
       if ([rep respondsToSelector: @selector (getBitmapDataPlanes:)])
         {
-          bmRep = (NSBitmapImageRep *) rep;
+          NSBitmapImageRep *bmRep = (NSBitmapImageRep *) rep;
 
           if ([bmRep numberOfPlanes] >= 3)
               [bmRep getBitmapDataPlanes: pixmapData];



reply via email to

[Prev in Thread] Current Thread [Next in Thread]