Fix bug #1362. * image.c (x_clear_image_1): Do not free background under HAVE_NS, it is not an indexed color. * nsterm.m (free_indexed_color): Add argument checking. * nsfns.m: Move config.h to before system includes (advised by Dan N.).
This commit is contained in:
parent
3a37fceafa
commit
5a06864fb6
7 changed files with 39 additions and 10 deletions
|
@ -1622,10 +1622,7 @@ x_clear_image_1 (f, img, pixmap_p, mask_p, colors_p)
|
|||
{
|
||||
Free_Pixmap (FRAME_X_DISPLAY (f), img->pixmap);
|
||||
img->pixmap = NO_PIXMAP;
|
||||
#ifdef HAVE_NS
|
||||
if (img->background_valid)
|
||||
ns_free_indexed_color(img->background, f);
|
||||
#endif
|
||||
/* NOTE (HAVE_NS): background color is NOT an indexed color! */
|
||||
img->background_valid = 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -25,9 +25,13 @@ Updated by Christian Limpach (chris@nice.ch)
|
|||
GNUstep port and post-20 update by Adrian Robert (arobert@cogsci.ucsd.edu)
|
||||
*/
|
||||
|
||||
/* This should be the first include, as it may set up #defines affecting
|
||||
interpretation of even the system includes. */
|
||||
#include "config.h"
|
||||
|
||||
#include <signal.h>
|
||||
#include <math.h>
|
||||
#include "config.h"
|
||||
|
||||
#include "lisp.h"
|
||||
#include "blockinput.h"
|
||||
#include "nsterm.h"
|
||||
|
@ -36,7 +40,6 @@ Updated by Christian Limpach (chris@nice.ch)
|
|||
#include "keyboard.h"
|
||||
#include "termhooks.h"
|
||||
#include "fontset.h"
|
||||
|
||||
#include "character.h"
|
||||
#include "font.h"
|
||||
|
||||
|
|
|
@ -20,6 +20,8 @@
|
|||
Author: Adrian Robert (arobert@cogsci.ucsd.edu)
|
||||
*/
|
||||
|
||||
/* This should be the first include, as it may set up #defines affecting
|
||||
interpretation of even the system includes. */
|
||||
#include "config.h"
|
||||
|
||||
#include "lisp.h"
|
||||
|
|
|
@ -25,7 +25,10 @@ Updated by Christian Limpach (chris@nice.ch)
|
|||
GNUstep port and post-20 update by Adrian Robert (arobert@cogsci.ucsd.edu)
|
||||
*/
|
||||
|
||||
/* This should be the first include, as it may set up #defines affecting
|
||||
interpretation of even the system includes. */
|
||||
#include "config.h"
|
||||
|
||||
#include "lisp.h"
|
||||
#include "dispextern.h"
|
||||
#include "nsterm.h"
|
||||
|
|
|
@ -21,7 +21,10 @@
|
|||
Christian Limpach, Scott Bender, Christophe de Dinechin) and code in the
|
||||
Carbon version by Yamamoto Mitsuharu. */
|
||||
|
||||
/* This should be the first include, as it may set up #defines affecting
|
||||
interpretation of even the system includes. */
|
||||
#include "config.h"
|
||||
|
||||
#include "lisp.h"
|
||||
#include "window.h"
|
||||
#include "buffer.h"
|
||||
|
|
|
@ -25,7 +25,10 @@ Updated by Christian Limpach (chris@nice.ch)
|
|||
GNUstep port and post-20 update by Adrian Robert (arobert@cogsci.ucsd.edu)
|
||||
*/
|
||||
|
||||
/* This should be the first include, as it may set up #defines affecting
|
||||
interpretation of even the system includes. */
|
||||
#include "config.h"
|
||||
|
||||
#include "lisp.h"
|
||||
#include "nsterm.h"
|
||||
#include "termhooks.h"
|
||||
|
|
26
src/nsterm.m
26
src/nsterm.m
|
@ -25,12 +25,15 @@ Updated by Christian Limpach (chris@nice.ch)
|
|||
GNUstep port and post-20 update by Adrian Robert (arobert@cogsci.ucsd.edu)
|
||||
*/
|
||||
|
||||
/* This should be the first include, as it may set up #defines affecting
|
||||
interpretation of even the system includes. */
|
||||
#include "config.h"
|
||||
|
||||
#include <math.h>
|
||||
#include <sys/types.h>
|
||||
#include <time.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "config.h"
|
||||
#include "lisp.h"
|
||||
#include "blockinput.h"
|
||||
#include "sysselect.h"
|
||||
|
@ -1280,7 +1283,6 @@ Free a pool and temporary objects it refers to (callable from C)
|
|||
color_table->size * sizeof (NSColor *));
|
||||
}
|
||||
idx = color_table->avail++;
|
||||
index = [NSNumber numberWithUnsignedInt: idx];
|
||||
}
|
||||
|
||||
color_table->colors[idx] = color;
|
||||
|
@ -1293,10 +1295,26 @@ Free a pool and temporary objects it refers to (callable from C)
|
|||
void
|
||||
ns_free_indexed_color (unsigned long idx, struct frame *f)
|
||||
{
|
||||
struct ns_color_table *color_table = FRAME_NS_DISPLAY_INFO (f)->color_table;
|
||||
struct ns_color_table *color_table;
|
||||
NSColor *color;
|
||||
if (!idx)
|
||||
NSNumber *index;
|
||||
|
||||
if (!f)
|
||||
return;
|
||||
|
||||
color_table = FRAME_NS_DISPLAY_INFO (f)->color_table;
|
||||
|
||||
if (idx <= 0 || idx >= color_table->size) {
|
||||
message1("ns_free_indexed_color: Color index out of range.\n");
|
||||
return;
|
||||
}
|
||||
|
||||
index = [NSNumber numberWithUnsignedInt: idx];
|
||||
if ([color_table->empty_indices containsObject: index]) {
|
||||
message1("ns_free_indexed_color: attempt to free already freed color.\n");
|
||||
return;
|
||||
}
|
||||
|
||||
color = color_table->colors[idx];
|
||||
[color release];
|
||||
color_table->colors[idx] = nil;
|
||||
|
|
Loading…
Add table
Reference in a new issue