From 036fbf735500aaa595bc806963cdf305c99a2113 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Mon, 18 Apr 2022 19:44:03 -0700 Subject: [PATCH 2/2] Port struct Lisp_Subr to C99 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * src/lisp.h (struct Lisp_Subr): Don’t use an anonymous union, a feature missing from C99 and not supported by older OS X. All uses changed. --- src/alloc.c | 2 +- src/comp.c | 2 +- src/data.c | 6 +++--- src/eval.c | 2 +- src/lisp.h | 6 +++--- src/pdumper.c | 4 ++-- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/alloc.c b/src/alloc.c index 8fd981a51f..4fc4044587 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -6894,7 +6894,7 @@ #define CHECK_ALLOCATED_AND_LIVE_SYMBOL() ((void) 0) { set_vector_marked (ptr); struct Lisp_Subr *subr = XSUBR (obj); - mark_stack_push_value (subr->native_intspec); + mark_stack_push_value (subr->intspec.native); mark_stack_push_value (subr->command_modes); mark_stack_push_value (subr->native_comp_u); mark_stack_push_value (subr->lambda_list); diff --git a/src/comp.c b/src/comp.c index 398f35ddb0..66a7ab789a 100644 --- a/src/comp.c +++ b/src/comp.c @@ -5439,7 +5439,7 @@ make_subr (Lisp_Object symbol_name, Lisp_Object minarg, Lisp_Object maxarg, x->s.min_args = XFIXNUM (minarg); x->s.max_args = FIXNUMP (maxarg) ? XFIXNUM (maxarg) : MANY; x->s.symbol_name = xstrdup (SSDATA (symbol_name)); - x->s.native_intspec = intspec; + x->s.intspec.native = intspec; x->s.command_modes = command_modes; x->s.doc = XFIXNUM (doc_idx); #ifdef HAVE_NATIVE_COMP diff --git a/src/data.c b/src/data.c index f06b561dcc..72af8a6648 100644 --- a/src/data.c +++ b/src/data.c @@ -1090,10 +1090,10 @@ DEFUN ("interactive-form", Finteractive_form, Sinteractive_form, 1, 1, 0, if (SUBRP (fun)) { - if (SUBR_NATIVE_COMPILEDP (fun) && !NILP (XSUBR (fun)->native_intspec)) - return XSUBR (fun)->native_intspec; + if (SUBR_NATIVE_COMPILEDP (fun) && !NILP (XSUBR (fun)->intspec.native)) + return XSUBR (fun)->intspec.native; - const char *spec = XSUBR (fun)->intspec; + const char *spec = XSUBR (fun)->intspec.string; if (spec) return list2 (Qinteractive, (*spec != '(') ? build_string (spec) : diff --git a/src/eval.c b/src/eval.c index 6b1e12b823..37bc03465c 100644 --- a/src/eval.c +++ b/src/eval.c @@ -2055,7 +2055,7 @@ DEFUN ("commandp", Fcommandp, Scommandp, 1, 2, 0, /* Emacs primitives are interactive if their DEFUN specifies an interactive spec. */ if (SUBRP (fun)) - return XSUBR (fun)->intspec ? Qt : if_prop; + return XSUBR (fun)->intspec.string ? Qt : if_prop; /* Bytecode objects are interactive if they are long enough to have an element whose index is COMPILED_INTERACTIVE, which is diff --git a/src/lisp.h b/src/lisp.h index f723876634..fb43bfa791 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -2151,9 +2151,9 @@ CHAR_TABLE_SET (Lisp_Object ct, int idx, Lisp_Object val) short min_args, max_args; const char *symbol_name; union { - const char *intspec; - Lisp_Object native_intspec; - }; + const char *string; + Lisp_Object native; + } intspec; Lisp_Object command_modes; EMACS_INT doc; #ifdef HAVE_NATIVE_COMP diff --git a/src/pdumper.c b/src/pdumper.c index 24393e0366..0b74e6431f 100644 --- a/src/pdumper.c +++ b/src/pdumper.c @@ -2876,13 +2876,13 @@ dump_subr (struct dump_context *ctx, const struct Lisp_Subr *subr) dump_remember_cold_op (ctx, COLD_OP_NATIVE_SUBR, make_lisp_ptr ((void *) subr, Lisp_Vectorlike)); - dump_field_lv (ctx, &out, subr, &subr->native_intspec, WEIGHT_NORMAL); + dump_field_lv (ctx, &out, subr, &subr->intspec.native, WEIGHT_NORMAL); dump_field_lv (ctx, &out, subr, &subr->command_modes, WEIGHT_NORMAL); } else { dump_field_emacs_ptr (ctx, &out, subr, &subr->symbol_name); - dump_field_emacs_ptr (ctx, &out, subr, &subr->intspec); + dump_field_emacs_ptr (ctx, &out, subr, &subr->intspec.string); dump_field_emacs_ptr (ctx, &out, subr, &subr->command_modes); } DUMP_FIELD_COPY (&out, subr, doc); -- 2.35.1