1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-26 15:21:51 -08:00

Fix memory leaks

* macfont.m (macfont_draw): positions where not freed.

* nsterm.h (EmacsApp): Always compile in shouldKeepRunning, isFirst
on Cocoa.

* nsterm.m (run): Always compile for Cocoa.  Use runtime check to
determine 10.9.

Fixes: debbugs:17751
This commit is contained in:
Jan Djärv 2014-06-11 19:57:51 +02:00
parent 15684f524b
commit b765f1fe83
4 changed files with 42 additions and 21 deletions

View file

@ -1,3 +1,13 @@
2014-06-11 Jan Djärv <jan.h.d@swipnet.se>
* nsterm.h (EmacsApp): Always compile in shouldKeepRunning, isFirst
on Cocoa.
* nsterm.m (run): Always compile for Cocoa. Use runtime check to
determine 10.9 (Bug#17751).
* macfont.m (macfont_draw): positions where not freed.
2014-06-10 Dmitry Antipov <dmantipov@yandex.ru>
* dispextern.h (PREPARE_FACE_FOR_DISPLAY): Remove as a duplicate of ...

View file

@ -2810,6 +2810,7 @@ macfont_draw (struct glyph_string *s, int from, int to, int x, int y,
xfree (glyphs);
xfree (positions);
CGContextRestoreGState (context);
unblock_input ();

View file

@ -100,7 +100,7 @@ typedef float EmacsCGFloat;
/* We override sendEvent: as a means to stop/start the event loop */
@interface EmacsApp : NSApplication
{
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_9
#ifdef NS_IMPL_COCOA
BOOL shouldKeepRunning;
BOOL isFirst;
#endif

View file

@ -4453,7 +4453,7 @@ ns_term_shutdown (int sig)
{
if (self = [super init])
{
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_9
#ifdef NS_IMPL_COCOA
self->isFirst = YES;
#endif
#ifdef NS_IMPL_GNUSTEP
@ -4464,30 +4464,40 @@ ns_term_shutdown (int sig)
return self;
}
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_9
#ifdef NS_IMPL_COCOA
- (void)run
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
#ifndef NSAppKitVersionNumber10_8
#define NSAppKitVersionNumber10_8 1187
#endif
if (isFirst) [self finishLaunching];
isFirst = NO;
if (NSAppKitVersionNumber <= NSAppKitVersionNumber10_8)
{
[super run];
return;
}
shouldKeepRunning = YES;
do
{
[pool release];
pool = [[NSAutoreleasePool alloc] init];
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSEvent *event =
[self nextEventMatchingMask:NSAnyEventMask
untilDate:[NSDate distantFuture]
inMode:NSDefaultRunLoopMode
dequeue:YES];
[self sendEvent:event];
[self updateWindows];
if (isFirst) [self finishLaunching];
isFirst = NO;
shouldKeepRunning = YES;
do
{
[pool release];
pool = [[NSAutoreleasePool alloc] init];
NSEvent *event =
[self nextEventMatchingMask:NSAnyEventMask
untilDate:[NSDate distantFuture]
inMode:NSDefaultRunLoopMode
dequeue:YES];
[self sendEvent:event];
[self updateWindows];
} while (shouldKeepRunning);
[pool release];
[pool release];
}
- (void)stop: (id)sender
@ -4497,7 +4507,7 @@ ns_term_shutdown (int sig)
// The file dialog still leaks 7k - 10k on 10.9 though.
[super stop:sender];
}
#endif
#endif /* NS_IMPL_COCOA */
- (void)logNotification: (NSNotification *)notification
{