--- glyphs-carbon.c.old Wed Feb 9 11:22:07 2005 +++ glyphs-carbon.c Wed Apr 27 22:57:22 2005 @@ -324,8 +324,7 @@ for (j = 0; j < i; j++) { Lisp_Object cons = XCAR (results); - colortbl[j].color = - COLOR_INSTANCE_CARBON_COLOR (XCOLOR_INSTANCE (XCDR (cons))); + colortbl[j].color = CGColorCreateCopy (COLOR_INSTANCE_CARBON_COLOR (XCOLOR_INSTANCE (XCDR (cons)))); /* mustn't lose this when we return */ colortbl[j].name = qxestrdup (XSTRING_DATA (XCAR (cons))); @@ -357,7 +356,7 @@ return color_ref; } else - return transparent_color; + return CGColorCreateCopy (transparent_color); } /* Taken from glyphs-msw.c. */ @@ -440,7 +439,7 @@ !strcasecmp (xpmimage.colorTable[i].symbolic, "None")) { *transp = TRUE; - colortbl[i] = transparent_color; + colortbl[i] = CGColorCreateCopy (transparent_color); transp_idx = i; goto label_found_color; } @@ -451,7 +450,7 @@ if (!qxestrcmp_c (color_symbols[j].name, xpmimage.colorTable[i].symbolic)) { - colortbl[i] = color_symbols[j].color; + colortbl[i] = CGColorCreateCopy (color_symbols[j].color); goto label_found_color; } } @@ -465,7 +464,7 @@ if (!strcasecmp (xpmimage.colorTable[i].c_color, "None")) { *transp = TRUE; - colortbl[i] = transparent_color; + colortbl[i] = CGColorCreateCopy (transparent_color); transp_idx = i; goto label_found_color; } @@ -505,7 +504,11 @@ XpmFreeXpmImage (&xpmimage); XpmFreeXpmInfo (&xpminfo); + + for (i = 0; i < (int) xpmimage.ncolors; i++) + CGColorRelease (colortbl[i]); xfree (colortbl, CGColorRef *); + return TRUE; } @@ -555,6 +558,7 @@ { while (nsymbols--) { + CGColorRelease (color_symbols[nsymbols].color); xfree (color_symbols[nsymbols].name, Ibyte *); } xfree(color_symbols, struct color_symbol *);