Index: src/console.h =================================================================== RCS file: /usr/CVSroot/XEmacs/xemacs-20/src/console.h,v retrieving revision 1.14 diff -u -r1.14 console.h --- src/console.h 1998/04/28 00:24:52 1.14 +++ src/console.h 1998/04/30 18:28:58 @@ -210,8 +210,6 @@ Lisp_Object pointer_fg, Lisp_Object pointer_bg, int dest_mask, Lisp_Object domain); - Lisp_Object (*xpm_normalize_method)(Lisp_Object inst, - Lisp_Object console_type); #endif Lisp_Object image_conversion_list; Index: src/event-msw.c =================================================================== RCS file: /usr/CVSroot/XEmacs/xemacs-20/src/event-msw.c,v retrieving revision 1.26 diff -u -r1.26 event-msw.c --- src/event-msw.c 1998/04/26 04:07:22 1.26 +++ src/event-msw.c 1998/04/30 18:29:01 @@ -1613,7 +1613,7 @@ if (!NILP(btext)) { - strncpy (tttext->szText, XSTRING_DATA (btext), 80); + strncpy (tttext->szText, XSTRING_DATA (btext), XSTRING_LENGTH(btext)+1); tttext->lpszText=tttext->szText; } #if 0 Index: src/glyphs-msw.c =================================================================== RCS file: /usr/CVSroot/XEmacs/xemacs-20/src/glyphs-msw.c,v retrieving revision 1.9 diff -u -r1.9 glyphs-msw.c --- src/glyphs-msw.c 1998/04/28 00:24:58 1.9 +++ src/glyphs-msw.c 1998/04/30 18:29:02 @@ -1,5 +1,10 @@ /* mswindows-specific Lisp objects. - Copyright (C) 1998 Free Software Foundation, Inc. + Copyright (C) 1993, 1994 Free Software Foundation, Inc. + Copyright (C) 1995 Board of Trustees, University of Illinois. + Copyright (C) 1995 Tinker Systems + Copyright (C) 1995, 1996 Ben Wing + Copyright (C) 1995 Sun Microsystems + Copyright (C) 1998 Andy Piper. This file is part of XEmacs. @@ -430,15 +435,85 @@ **********************************************************************/ #ifdef HAVE_XPM + +struct color_symbol +{ + char* name; + COLORREF color; +}; + +static struct color_symbol* +extract_xpm_color_names (Lisp_Object device, + Lisp_Object domain, + Lisp_Object color_symbol_alist, + int* nsymbols) +{ + /* This function can GC */ + Lisp_Object rest; + Lisp_Object results = Qnil; + int i, j; + struct color_symbol *colortbl; + struct gcpro gcpro1, gcpro2; + + GCPRO2 (results, device); + + /* We built up results to be (("name" . #) ...) so that if an + error happens we don't lose any malloc()ed data, or more importantly, + leave any pixels allocated in the server. */ + i = 0; + LIST_LOOP (rest, color_symbol_alist) + { + Lisp_Object cons = XCAR (rest); + Lisp_Object name = XCAR (cons); + Lisp_Object value = XCDR (cons); + if (NILP (value)) + continue; + if (STRINGP (value)) + value = + Fmake_color_instance + (value, device, encode_error_behavior_flag (ERROR_ME_NOT)); + else + { + assert (COLOR_SPECIFIERP (value)); + value = Fspecifier_instance (value, domain, Qnil, Qnil); + } + if (NILP (value)) + continue; + results = noseeum_cons (noseeum_cons (name, value), results); + i++; + } + UNGCPRO; /* no more evaluation */ + + *nsymbols=i; + if (i == 0) return 0; + + colortbl = xnew_array_and_zero (struct color_symbol, i); + + for (j=0; j