diff options
| author | Po Lu | 2022-05-31 16:25:20 +0800 |
|---|---|---|
| committer | Po Lu | 2022-05-31 16:25:20 +0800 |
| commit | d94890404e91d5ba50afaa4bc27b9c655dbed5f1 (patch) | |
| tree | b24c44f7a79a5f617f85b6a5cabefb1609aece52 /src | |
| parent | b7bbf8864298dfd959ca6e7b0fa8d7fd0bbbd81f (diff) | |
| download | emacs-d94890404e91d5ba50afaa4bc27b9c655dbed5f1.tar.gz emacs-d94890404e91d5ba50afaa4bc27b9c655dbed5f1.zip | |
Fix crashes displaying menu help text on NS
* src/nsterm.m (ns_flush_display): Run event loop manually,
avoiding a double free of an autorelease pool.
Diffstat (limited to 'src')
| -rw-r--r-- | src/nsterm.m | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/nsterm.m b/src/nsterm.m index 3d2b4116cab..0c83656125c 100644 --- a/src/nsterm.m +++ b/src/nsterm.m | |||
| @@ -5185,14 +5185,19 @@ ns_update_window_end (struct window *w, bool cursor_on_p, | |||
| 5185 | static void | 5185 | static void |
| 5186 | ns_flush_display (struct frame *f) | 5186 | ns_flush_display (struct frame *f) |
| 5187 | { | 5187 | { |
| 5188 | struct input_event ie; | 5188 | NSAutoreleasePool *ap; |
| 5189 | |||
| 5190 | ap = [[NSAutoreleasePool alloc] init]; | ||
| 5189 | 5191 | ||
| 5190 | /* Called from some of the minibuffer code. Run the event loop once | 5192 | /* Called from some of the minibuffer code. Run the event loop once |
| 5191 | to make the toolkit make changes that were made to the back | 5193 | to make the toolkit make changes that were made to the back |
| 5192 | buffer visible again. TODO: what should happen to ie? */ | 5194 | buffer visible again. */ |
| 5193 | 5195 | ||
| 5194 | EVENT_INIT (ie); | 5196 | send_appdefined = YES; |
| 5195 | ns_read_socket (FRAME_TERMINAL (f), &ie); | 5197 | ns_send_appdefined (-1); |
| 5198 | |||
| 5199 | [NSApp run]; | ||
| 5200 | [ap release]; | ||
| 5196 | } | 5201 | } |
| 5197 | 5202 | ||
| 5198 | /* This and next define (many of the) public functions in this | 5203 | /* This and next define (many of the) public functions in this |