]> git.eshelyaron.com Git - emacs.git/commitdiff
Port struct Lisp_Subr to C99
authorPaul Eggert <eggert@cs.ucla.edu>
Tue, 19 Apr 2022 02:44:03 +0000 (19:44 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Tue, 19 Apr 2022 02:47:37 +0000 (19:47 -0700)
* 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
src/comp.c
src/data.c
src/eval.c
src/lisp.h
src/pdumper.c

index 8fd981a51f920575aca492e62c8be2d43eaf2303..4fc40445874aca572693abc19803fb82a518e5e6 100644 (file)
@@ -6894,7 +6894,7 @@ process_mark_stack (ptrdiff_t base_sp)
                  {
                    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);
index 398f35ddb0ba8ecaa0d3654b9cee6f1affedc123..66a7ab789a8e3a40040da2f86c73da4a2da0ac23 100644 (file)
@@ -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
index f06b561dcc61ec6a607b3b3830d95bd55cabedbb..72af8a6648e1b07392d32c04298c1226c5b33ce5 100644 (file)
@@ -1090,10 +1090,10 @@ Value, if non-nil, is a list (interactive SPEC).  */)
 
   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) :
index 6b1e12b823291f180f07b425b16880d647bbe28b..37bc03465cc26fb9cdce7f324621c897bf3838e0 100644 (file)
@@ -2055,7 +2055,7 @@ then strings and vectors are not accepted.  */)
   /* 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
index f723876634aef7fd5eb40b0eced951084f7c22af..fb43bfa791b65294ece0271345836c10cd5a3c8b 100644 (file)
@@ -2151,9 +2151,9 @@ struct Lisp_Subr
     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
index 24393e036654a6e3161560088dfdb1000fc8465e..0b74e6431fefc052a74e4fe0791217ca9e266d92 100644 (file)
@@ -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);