From 82f49c6a373f981a778f4d939ca2d47c031e0659 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Wed, 8 Jun 2016 10:33:34 -0700 Subject: [PATCH] Replace IF_LINT by NONVOLATILE and UNINIT Inspired by a suggestion from RMS in: http://bugs.gnu.org/23640#58 * .dir-locals.el (c-mode): Adjust to macro changes. * src/conf_post.h (NONVOLATILE, UNINIT): New macros (Bug#23640). (IF_LINT): Remove. All uses replaced by the new macros. --- .dir-locals.el | 2 +- lib-src/make-docfile.c | 2 +- src/buffer.c | 3 ++- src/charset.c | 3 ++- src/cm.c | 2 +- src/coding.c | 9 +++++---- src/composite.c | 3 ++- src/conf_post.h | 16 +++++++++++++--- src/editfns.c | 4 ++-- src/fileio.c | 4 ++-- src/font.c | 3 ++- src/fontset.c | 3 ++- src/fringe.c | 2 +- src/gtkutil.c | 3 ++- src/image.c | 11 +++++------ src/indent.c | 6 +++--- src/keyboard.c | 10 ++++------ src/lread.c | 9 ++------- src/minibuf.c | 2 +- src/print.c | 2 +- src/regex.c | 2 +- src/syntax.c | 2 +- src/term.c | 8 ++++---- src/window.c | 8 +++++--- src/xdisp.c | 30 +++++++++++++++--------------- src/xfont.c | 2 +- 26 files changed, 81 insertions(+), 70 deletions(-) diff --git a/.dir-locals.el b/.dir-locals.el index 7c14802b66..97e51807e7 100644 --- a/.dir-locals.el +++ b/.dir-locals.el @@ -2,7 +2,7 @@ (sentence-end-double-space . t) (fill-column . 70))) (c-mode . ((c-file-style . "GNU") - (c-noise-macro-with-parens-names . ("IF_LINT")))) + (c-noise-macro-names . ("NONVOLATILE" "UNINIT")))) (objc-mode . ((c-file-style . "GNU"))) (log-edit-mode . ((log-edit-font-lock-gnu-style . t) (log-edit-setup-add-author . t))) diff --git a/lib-src/make-docfile.c b/lib-src/make-docfile.c index 32e3817a46..f463f13699 100644 --- a/lib-src/make-docfile.c +++ b/lib-src/make-docfile.c @@ -491,7 +491,7 @@ write_c_args (char *func, char *buf, int minargs, int maxargs) { char *p; bool in_ident = false; - char *ident_start IF_LINT (= NULL); + char *ident_start UNINIT; ptrdiff_t ident_length = 0; fputs ("(fn", stdout); diff --git a/src/buffer.c b/src/buffer.c index 534b9e40da..af8c7324da 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -3907,7 +3907,8 @@ buffer. */) struct buffer *b, *ob = 0; Lisp_Object obuffer; ptrdiff_t count = SPECPDL_INDEX (); - ptrdiff_t n_beg, n_end, o_beg IF_LINT (= 0), o_end IF_LINT (= 0); + ptrdiff_t n_beg, n_end; + ptrdiff_t o_beg UNINIT, o_end UNINIT; CHECK_OVERLAY (overlay); if (NILP (buffer)) diff --git a/src/charset.c b/src/charset.c index 1a13584953..688205245a 100644 --- a/src/charset.c +++ b/src/charset.c @@ -240,7 +240,8 @@ struct charset_map_entries static void load_charset_map (struct charset *charset, struct charset_map_entries *entries, int n_entries, int control_flag) { - Lisp_Object vec, table IF_LINT (= Qnil); + Lisp_Object vec; + Lisp_Object table UNINIT; unsigned max_code = CHARSET_MAX_CODE (charset); bool ascii_compatible_p = charset->ascii_compatible_p; int min_char, max_char, nonascii_min_char; diff --git a/src/cm.c b/src/cm.c index 4f94c07931..e135889f17 100644 --- a/src/cm.c +++ b/src/cm.c @@ -321,7 +321,7 @@ cmgoto (struct tty_display_info *tty, int row, int col) llcost, relcost, directcost; - int use IF_LINT (= 0); + int use UNINIT; char *p; const char *dcm; diff --git a/src/coding.c b/src/coding.c index a28fec1efe..3f7d11151d 100644 --- a/src/coding.c +++ b/src/coding.c @@ -2365,7 +2365,8 @@ decode_coding_emacs_mule (struct coding_system *coding) while (1) { - int c, id IF_LINT (= 0); + int c; + int id UNINIT; src_base = src; consumed_chars_base = consumed_chars; @@ -2410,7 +2411,7 @@ decode_coding_emacs_mule (struct coding_system *coding) } else { - int nchars IF_LINT (= 0), nbytes IF_LINT (= 0); + int nchars UNINIT, nbytes UNINIT; /* emacs_mule_char can load a charset map from a file, which allocates a large structure and might cause buffer text to be relocated as result. Thus, we need to remember the @@ -8565,8 +8566,8 @@ detect_coding_system (const unsigned char *src, base_category = XINT (CODING_ATTR_CATEGORY (attrs)); if (base_category == coding_category_undecided) { - enum coding_category category IF_LINT (= 0); - struct coding_system *this IF_LINT (= NULL); + enum coding_category category UNINIT; + struct coding_system *this UNINIT; int c, i; bool inhibit_nbd = inhibit_flag (coding.spec.undecided.inhibit_nbd, inhibit_null_byte_detection); diff --git a/src/composite.c b/src/composite.c index 49b0003636..bef1c5f7c3 100644 --- a/src/composite.c +++ b/src/composite.c @@ -1308,7 +1308,8 @@ composition_reseat_it (struct composition_it *cmp_it, ptrdiff_t charpos, int composition_update_it (struct composition_it *cmp_it, ptrdiff_t charpos, ptrdiff_t bytepos, Lisp_Object string) { - int i, c IF_LINT (= 0); + int i; + int c UNINIT; if (cmp_it->ch < 0) { diff --git a/src/conf_post.h b/src/conf_post.h index 762aa7727f..1dd915b596 100644 --- a/src/conf_post.h +++ b/src/conf_post.h @@ -357,11 +357,21 @@ extern int emacs_setenv_TZ (char const *); # define FLEXIBLE_ARRAY_MEMBER #endif -/* Use CODE only if lint checking is in effect. */ +/* When used in place of 'volatile', 'NONVOLATILE' is equivalent to nothing, + except it cajoles GCC into not warning incorrectly that a variable needs to + be volatile. This works around GCC bug 54561. */ #if defined GCC_LINT || defined lint -# define IF_LINT(Code) Code +# define NONVOLATILE volatile #else -# define IF_LINT(Code) /* empty */ +# define NONVOLATILE /* empty */ +#endif + +/* 'int x UNINIT;' is equivalent to 'int x;', except it cajoles GCC + into not warning incorrectly about use of an uninitialized variable. */ +#if defined GCC_LINT || defined lint +# define UNINIT = {0,} +#else +# define UNINIT /* empty */ #endif /* conf_post.h ends here */ diff --git a/src/editfns.c b/src/editfns.c index 81c30d30d6..f29fc510a2 100644 --- a/src/editfns.c +++ b/src/editfns.c @@ -3362,7 +3362,7 @@ It returns the number of characters changed. */) ptrdiff_t size; /* Size of translate table. */ ptrdiff_t pos, pos_byte, end_pos; bool multibyte = !NILP (BVAR (current_buffer, enable_multibyte_characters)); - bool string_multibyte IF_LINT (= 0); + bool string_multibyte UNINIT; validate_region (&start, &end); if (CHAR_TABLE_P (table)) @@ -3917,7 +3917,7 @@ styled_format (ptrdiff_t nargs, Lisp_Object *args, bool message) ptrdiff_t bufsize = sizeof initial_buffer; ptrdiff_t max_bufsize = STRING_BYTES_BOUND + 1; char *p; - ptrdiff_t buf_save_value_index IF_LINT (= 0); + ptrdiff_t buf_save_value_index UNINIT; char *format, *end; ptrdiff_t nchars; /* When we make a multibyte string, we must pay attention to the diff --git a/src/fileio.c b/src/fileio.c index 9e3e54df96..99840457ec 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -4687,7 +4687,7 @@ write_region (Lisp_Object start, Lisp_Object end, Lisp_Object filename, { int open_flags; int mode; - off_t offset IF_LINT (= 0); + off_t offset UNINIT; bool open_and_close_file = desc < 0; bool ok; int save_errno = 0; @@ -4695,7 +4695,7 @@ write_region (Lisp_Object start, Lisp_Object end, Lisp_Object filename, struct stat st; struct timespec modtime; ptrdiff_t count = SPECPDL_INDEX (); - ptrdiff_t count1 IF_LINT (= 0); + ptrdiff_t count1 UNINIT; Lisp_Object handler; Lisp_Object visit_file; Lisp_Object annotations; diff --git a/src/font.c b/src/font.c index 6dbda40d52..f289891bf6 100644 --- a/src/font.c +++ b/src/font.c @@ -2234,7 +2234,8 @@ font_sort_entities (Lisp_Object list, Lisp_Object prefer, struct font_sort_data *data; unsigned best_score; Lisp_Object best_entity; - Lisp_Object tail, vec IF_LINT (= Qnil); + Lisp_Object tail; + Lisp_Object vec UNINIT; USE_SAFE_ALLOCA; for (i = FONT_WEIGHT_INDEX; i <= FONT_AVGWIDTH_INDEX; i++) diff --git a/src/fontset.c b/src/fontset.c index d87901d42b..81528de55a 100644 --- a/src/fontset.c +++ b/src/fontset.c @@ -750,7 +750,8 @@ fontset_find_font (Lisp_Object fontset, int c, struct face *face, static Lisp_Object fontset_font (Lisp_Object fontset, int c, struct face *face, int id) { - Lisp_Object rfont_def, default_rfont_def IF_LINT (= Qnil); + Lisp_Object rfont_def; + Lisp_Object default_rfont_def UNINIT; Lisp_Object base_fontset; /* Try a font-group of FONTSET. */ diff --git a/src/fringe.c b/src/fringe.c index 55f37b8878..87ec9d15c0 100644 --- a/src/fringe.c +++ b/src/fringe.c @@ -956,7 +956,7 @@ update_window_fringes (struct window *w, bool keep_current_p) row->indicate_bob_p is set, so it's OK that top_row_ends_at_zv_p is not initialized here. Similarly for bot_ind_rn, row->indicate_eob_p and bot_row_ends_at_zv_p. */ - int top_row_ends_at_zv_p IF_LINT (= 0), bot_row_ends_at_zv_p IF_LINT (= 0); + int top_row_ends_at_zv_p UNINIT, bot_row_ends_at_zv_p UNINIT; if (w->pseudo_window_p) return 0; diff --git a/src/gtkutil.c b/src/gtkutil.c index e791e6ac31..88e6d30bd9 100644 --- a/src/gtkutil.c +++ b/src/gtkutil.c @@ -1829,7 +1829,8 @@ xg_get_file_with_chooser (struct frame *f, { char msgbuf[1024]; - GtkWidget *filewin, *wtoggle, *wbox, *wmessage IF_LINT (= NULL); + GtkWidget *filewin, *wtoggle, *wbox; + GtkWidget *wmessage UNINIT; GtkWindow *gwin = GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)); GtkFileChooserAction action = (mustmatch_p ? GTK_FILE_CHOOSER_ACTION_OPEN : diff --git a/src/image.c b/src/image.c index 0991f57957..38866e0834 100644 --- a/src/image.c +++ b/src/image.c @@ -1142,7 +1142,8 @@ static RGB_PIXEL_COLOR four_corners_best (XImagePtr_or_DC ximg, int *corners, unsigned long width, unsigned long height) { - RGB_PIXEL_COLOR corner_pixels[4], best IF_LINT (= 0); + RGB_PIXEL_COLOR corner_pixels[4]; + RGB_PIXEL_COLOR best UNINIT; int i, best_count; if (corners && corners[BOT_CORNER] >= 0) @@ -5895,9 +5896,8 @@ static bool png_load_body (struct frame *f, struct image *img, struct png_load_context *c) { Lisp_Object specified_file; - /* IF_LINT (volatile) works around GCC bug 54561. */ - Lisp_Object IF_LINT (volatile) specified_data; - FILE * IF_LINT (volatile) fp = NULL; + Lisp_Object NONVOLATILE specified_data; + FILE *NONVOLATILE fp = NULL; int x, y; ptrdiff_t i; png_struct *png_ptr; @@ -6668,8 +6668,7 @@ jpeg_load_body (struct frame *f, struct image *img, struct my_jpeg_error_mgr *mgr) { Lisp_Object specified_file; - /* IF_LINT (volatile) works around GCC bug 54561. */ - Lisp_Object IF_LINT (volatile) specified_data; + Lisp_Object NONVOLATILE specified_data; FILE *volatile fp = NULL; JSAMPARRAY buffer; int row_stride, x, y; diff --git a/src/indent.c b/src/indent.c index 0ef8903501..5d7c6ae4f9 100644 --- a/src/indent.c +++ b/src/indent.c @@ -1995,7 +1995,7 @@ whether or not it is currently displayed in some window. */) struct text_pos pt; struct window *w; Lisp_Object old_buffer; - EMACS_INT old_charpos IF_LINT (= 0), old_bytepos IF_LINT (= 0); + EMACS_INT old_charpos UNINIT, old_bytepos UNINIT; Lisp_Object lcols; void *itdata = NULL; @@ -2036,8 +2036,8 @@ whether or not it is currently displayed in some window. */) bool disp_string_at_start_p = 0; ptrdiff_t nlines = XINT (lines); int vpos_init = 0; - double start_col IF_LINT (= 0); - int start_x IF_LINT (= 0); + double start_col UNINIT; + int start_x UNINIT; int to_x = -1; bool start_x_given = !NILP (cur_col); diff --git a/src/keyboard.c b/src/keyboard.c index d2976cb735..717c0710a5 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -2312,9 +2312,7 @@ read_char (int commandflag, Lisp_Object map, Lisp_Object prev_event, bool *used_mouse_menu, struct timespec *end_time) { - /* IF_LINT (volatile) works around GCC bug 54561. */ - Lisp_Object IF_LINT (volatile) c; - + Lisp_Object NONVOLATILE c; ptrdiff_t jmpcount; sys_jmp_buf local_getcjmp; sys_jmp_buf save_jump; @@ -8843,7 +8841,7 @@ read_key_sequence (Lisp_Object *keybuf, int bufsize, Lisp_Object prompt, /* The length of the echo buffer when we started reading, and the length of this_command_keys when we started reading. */ - ptrdiff_t echo_start IF_LINT (= 0); + ptrdiff_t echo_start UNINIT; ptrdiff_t keys_start; Lisp_Object current_binding = Qnil; @@ -8891,7 +8889,7 @@ read_key_sequence (Lisp_Object *keybuf, int bufsize, Lisp_Object prompt, While we're reading, we keep the event here. */ Lisp_Object delayed_switch_frame; - Lisp_Object original_uppercase IF_LINT (= Qnil); + Lisp_Object original_uppercase UNINIT; int original_uppercase_position = -1; /* Gets around Microsoft compiler limitations. */ @@ -9001,7 +8999,7 @@ read_key_sequence (Lisp_Object *keybuf, int bufsize, Lisp_Object prompt, while those allow us to restart the entire key sequence, echo_local_start and keys_local_start allow us to throw away just one key. */ - ptrdiff_t echo_local_start IF_LINT (= 0); + ptrdiff_t echo_local_start UNINIT; int keys_local_start; Lisp_Object new_binding; diff --git a/src/lread.c b/src/lread.c index 98a4d69894..b08ce17fd9 100644 --- a/src/lread.c +++ b/src/lread.c @@ -1040,7 +1040,7 @@ Return t if the file exists and loads successfully. */) { FILE *stream; int fd; - int fd_index; + int fd_index UNINIT; ptrdiff_t count = SPECPDL_INDEX (); Lisp_Object found, efound, hist_file_name; /* True means we printed the ".el is newer" message. */ @@ -1156,12 +1156,7 @@ Return t if the file exists and loads successfully. */) #endif } - if (fd < 0) - { - /* Pacify older GCC with --enable-gcc-warnings. */ - IF_LINT (fd_index = 0); - } - else + if (0 <= fd) { fd_index = SPECPDL_INDEX (); record_unwind_protect_int (close_file_unwind, fd); diff --git a/src/minibuf.c b/src/minibuf.c index 75831618ea..7bad6f0e01 100644 --- a/src/minibuf.c +++ b/src/minibuf.c @@ -194,7 +194,7 @@ read_minibuf_noninteractive (Lisp_Object map, Lisp_Object initial, int c; unsigned char hide_char = 0; struct emacs_tty etty; - bool etty_valid IF_LINT (= false); + bool etty_valid UNINIT; /* Check, whether we need to suppress echoing. */ if (CHARACTERP (Vread_hide_char)) diff --git a/src/print.c b/src/print.c index 83edbb6bfa..5531210e1b 100644 --- a/src/print.c +++ b/src/print.c @@ -203,7 +203,7 @@ print_unwind (Lisp_Object saved_text) static void printchar_to_stream (unsigned int ch, FILE *stream) { - Lisp_Object dv IF_LINT (= Qnil); + Lisp_Object dv UNINIT; ptrdiff_t i = 0, n = 1; Lisp_Object coding_system = Vlocale_coding_system; bool encode_p = false; diff --git a/src/regex.c b/src/regex.c index fc2a46fd5a..f92bcb7923 100644 --- a/src/regex.c +++ b/src/regex.c @@ -5444,7 +5444,7 @@ re_match_2_internal (struct re_pattern_buffer *bufp, const_re_char *string1, /* Start of actual range_table, or end of bitmap if there is no range table. */ - re_char *range_table IF_LINT (= NULL); + re_char *range_table UNINIT; /* Nonzero if there is a range table. */ int range_table_exists; diff --git a/src/syntax.c b/src/syntax.c index 78c7de9c65..1c1a2f8278 100644 --- a/src/syntax.c +++ b/src/syntax.c @@ -1633,7 +1633,7 @@ skip_chars (bool forwardp, Lisp_Object string, Lisp_Object lim, int c; char fastmap[0400]; /* Store the ranges of non-ASCII characters. */ - int *char_ranges IF_LINT (= NULL); + int *char_ranges UNINIT; int n_char_ranges = 0; bool negate = 0; ptrdiff_t i, i_byte; diff --git a/src/term.c b/src/term.c index df583cb150..7e63a0cf63 100644 --- a/src/term.c +++ b/src/term.c @@ -548,8 +548,8 @@ encode_terminal_code (struct glyph *src, int src_len, { if (src->type == COMPOSITE_GLYPH) { - struct composition *cmp IF_LINT (= NULL); - Lisp_Object gstring IF_LINT (= Qnil); + struct composition *cmp UNINIT; + Lisp_Object gstring UNINIT; int i; nbytes = buf - encode_terminal_src; @@ -614,7 +614,7 @@ encode_terminal_code (struct glyph *src, int src_len, else if (! CHAR_GLYPH_PADDING_P (*src)) { GLYPH g; - int c IF_LINT (= 0); + int c UNINIT; Lisp_Object string; string = Qnil; @@ -3099,7 +3099,7 @@ tty_menu_activate (tty_menu *menu, int *pane, int *selidx, struct tty_menu_state *state; int statecount, x, y, i; bool leave, onepane; - int result IF_LINT (= 0); + int result UNINIT; int title_faces[4]; /* Face to display the menu title. */ int faces[4], buffers_num_deleted = 0; struct frame *sf = SELECTED_FRAME (); diff --git a/src/window.c b/src/window.c index 99a0709d62..fe10241c45 100644 --- a/src/window.c +++ b/src/window.c @@ -2910,9 +2910,11 @@ window-start value is reasonable when this function is called. */) { struct window *w, *r, *s; struct frame *f; - Lisp_Object sibling, pwindow, swindow IF_LINT (= Qnil), delta; - ptrdiff_t startpos IF_LINT (= 0), startbyte IF_LINT (= 0); - int top IF_LINT (= 0), new_top; + Lisp_Object sibling, pwindow, delta; + Lisp_Object swindow UNINIT; + ptrdiff_t startpos UNINIT, startbyte UNINIT; + int top UNINIT; + int new_top; bool resize_failed = false; w = decode_valid_window (window); diff --git a/src/xdisp.c b/src/xdisp.c index d2f0d49d2b..d589080ac4 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -8558,7 +8558,8 @@ move_it_in_display_line_to (struct it *it, void *ppos_data = NULL; bool may_wrap = false; enum it_method prev_method = it->method; - ptrdiff_t closest_pos IF_LINT (= 0), prev_pos = IT_CHARPOS (*it); + ptrdiff_t closest_pos UNINIT; + ptrdiff_t prev_pos = IT_CHARPOS (*it); bool saw_smaller_pos = prev_pos < to_charpos; /* Don't produce glyphs in produce_glyphs. */ @@ -20416,16 +20417,16 @@ display_line (struct it *it) struct it wrap_it; void *wrap_data = NULL; bool may_wrap = false; - int wrap_x IF_LINT (= 0); + int wrap_x UNINIT; int wrap_row_used = -1; - int wrap_row_ascent IF_LINT (= 0), wrap_row_height IF_LINT (= 0); - int wrap_row_phys_ascent IF_LINT (= 0), wrap_row_phys_height IF_LINT (= 0); - int wrap_row_extra_line_spacing IF_LINT (= 0); - ptrdiff_t wrap_row_min_pos IF_LINT (= 0), wrap_row_min_bpos IF_LINT (= 0); - ptrdiff_t wrap_row_max_pos IF_LINT (= 0), wrap_row_max_bpos IF_LINT (= 0); + int wrap_row_ascent UNINIT, wrap_row_height UNINIT; + int wrap_row_phys_ascent UNINIT, wrap_row_phys_height UNINIT; + int wrap_row_extra_line_spacing UNINIT; + ptrdiff_t wrap_row_min_pos UNINIT, wrap_row_min_bpos UNINIT; + ptrdiff_t wrap_row_max_pos UNINIT, wrap_row_max_bpos UNINIT; int cvpos; ptrdiff_t min_pos = ZV + 1, max_pos = 0; - ptrdiff_t min_bpos IF_LINT (= 0), max_bpos IF_LINT (= 0); + ptrdiff_t min_bpos UNINIT, max_bpos UNINIT; bool pending_handle_line_prefix = false; /* We always start displaying at hpos zero even if hscrolled. */ @@ -25595,7 +25596,7 @@ draw_glyphs (struct window *w, int x, struct glyph_row *row, { struct glyph_string *h, *t; Mouse_HLInfo *hlinfo = MOUSE_HL_INFO (f); - int mouse_beg_col IF_LINT (= 0), mouse_end_col IF_LINT (= 0); + int mouse_beg_col UNINIT, mouse_end_col UNINIT; bool check_mouse_face = false; int dummy_x = 0; @@ -29702,12 +29703,11 @@ note_mode_line_or_margin_highlight (Lisp_Object window, int x, int y, int dx, dy, width, height; ptrdiff_t charpos; Lisp_Object string, object = Qnil; - Lisp_Object pos IF_LINT (= Qnil), help; - + Lisp_Object pos UNINIT; Lisp_Object mouse_face; int original_x_pixel = x; struct glyph * glyph = NULL, * row_start_glyph = NULL; - struct glyph_row *row IF_LINT (= 0); + struct glyph_row *row UNINIT; if (area == ON_MODE_LINE || area == ON_HEADER_LINE) { @@ -29747,7 +29747,7 @@ note_mode_line_or_margin_highlight (Lisp_Object window, int x, int y, &object, &dx, &dy, &width, &height); } - help = Qnil; + Lisp_Object help = Qnil; #ifdef HAVE_WINDOW_SYSTEM if (IMAGEP (object)) @@ -30322,8 +30322,8 @@ note_mouse_highlight (struct frame *f, int x, int y) { /* The mouse-highlighting, if any, comes from an overlay or text property in the buffer. */ - Lisp_Object buffer IF_LINT (= Qnil); - Lisp_Object disp_string IF_LINT (= Qnil); + Lisp_Object buffer UNINIT; + Lisp_Object disp_string UNINIT; if (STRINGP (object)) { diff --git a/src/xfont.c b/src/xfont.c index 0ef64bef10..8fbe94c01a 100644 --- a/src/xfont.c +++ b/src/xfont.c @@ -635,7 +635,7 @@ xfont_list_family (struct frame *f) char **names; int num_fonts, i; Lisp_Object list; - char *last_family IF_LINT (= 0); + char *last_family UNINIT; int last_len; block_input (); -- 2.39.2