summaryrefslogtreecommitdiff
path: root/app-editors/xemacs/files/xemacs-21.5.35-va_args.patch
diff options
context:
space:
mode:
Diffstat (limited to 'app-editors/xemacs/files/xemacs-21.5.35-va_args.patch')
-rw-r--r--app-editors/xemacs/files/xemacs-21.5.35-va_args.patch179
1 files changed, 179 insertions, 0 deletions
diff --git a/app-editors/xemacs/files/xemacs-21.5.35-va_args.patch b/app-editors/xemacs/files/xemacs-21.5.35-va_args.patch
new file mode 100644
index 000000000000..a3d5f14b728a
--- /dev/null
+++ b/app-editors/xemacs/files/xemacs-21.5.35-va_args.patch
@@ -0,0 +1,179 @@
+# HG changeset patch
+# User Aidan Kehoe <kehoea@parhasard.net>
+# Date 1727074995 -3600
+# Mon Sep 23 08:03:15 2024 +0100
+# Node ID d40990b854cf32198aea31eae0d60ce91ce0f4f7
+# Parent d3dfe7ea1c31cc619bf8416e04c5466927d9c6f5
+Avoid passing an int among Lisp_Object va_args, specifier instantiate methods.
+
+src/ChangeLog addition:
+
+2024-09-08 Aidan Kehoe <kehoea@parhasard.net>
+
+ * fontcolor.c (color_instantiate):
+ * fontcolor.c (font_instantiate):
+ * fontcolor.c (face_boolean_instantiate):
+ * fontcolor.c (face_background_placement_instantiate):
+ * glyphs.c (image_instantiate):
+ * specifier.c (specifier_instance_from_inst_list):
+ * specifier.h (struct specifier_methods):
+ Avoid passing an int among the Lisp_Object va_args of the
+ specifier instantiate methods, this is not portable behaviour,
+ thank you clang and -fsanitize=undefined.
+
+[Changelog patch removed]
+
+diff -r d3dfe7ea1c31 -r d40990b854cf src/fontcolor.c
+--- a/src/fontcolor.c Mon Sep 23 08:01:37 2024 +0100
++++ b/src/fontcolor.c Mon Sep 23 08:03:15 2024 +0100
+@@ -1380,7 +1380,7 @@
+ static Lisp_Object
+ color_instantiate (Lisp_Object specifier, Lisp_Object UNUSED (matchspec),
+ Lisp_Object domain, Lisp_Object instantiator,
+- Lisp_Object depth, int no_fallback)
++ Lisp_Object depth, Lisp_Object no_fallback)
+ {
+ /* When called, we're inside of call_with_suspended_errors(),
+ so we can freely error. */
+@@ -1436,7 +1436,7 @@
+ (Fget_face (XVECTOR_DATA (instantiator)[0]),
+ COLOR_SPECIFIER_FACE_PROPERTY
+ (XCOLOR_SPECIFIER (specifier)),
+- domain, ERROR_ME, no_fallback, depth));
++ domain, ERROR_ME, !NILP (no_fallback), depth));
+
+ case 2:
+ return (FACE_PROPERTY_INSTANCE_1
+@@ -1653,7 +1653,7 @@
+ font_instantiate (Lisp_Object UNUSED (specifier),
+ Lisp_Object USED_IF_MULE (matchspec),
+ Lisp_Object domain, Lisp_Object instantiator,
+- Lisp_Object depth, int no_fallback)
++ Lisp_Object depth, Lisp_Object no_fallback)
+ {
+ /* When called, we're inside of call_with_suspended_errors(),
+ so we can freely error. */
+@@ -1766,13 +1766,15 @@
+
+ match_inst = face_property_matching_instance
+ (Fget_face (XVECTOR_DATA (instantiator)[0]), Qfont,
+- charset, domain, ERROR_ME, no_fallback, depth, STAGE_INITIAL);
++ charset, domain, ERROR_ME, !NILP (no_fallback),
++ depth, STAGE_INITIAL);
+
+ if (UNBOUNDP(match_inst))
+ {
+ match_inst = face_property_matching_instance
+ (Fget_face (XVECTOR_DATA (instantiator)[0]), Qfont,
+- charset, domain, ERROR_ME, no_fallback, depth, STAGE_FINAL);
++ charset, domain, ERROR_ME, !NILP (no_fallback), depth,
++ STAGE_FINAL);
+ }
+
+ return match_inst;
+@@ -1868,7 +1870,7 @@
+ face_boolean_instantiate (Lisp_Object specifier,
+ Lisp_Object UNUSED (matchspec),
+ Lisp_Object domain, Lisp_Object instantiator,
+- Lisp_Object depth, int no_fallback)
++ Lisp_Object depth, Lisp_Object no_fallback)
+ {
+ /* When called, we're inside of call_with_suspended_errors(),
+ so we can freely error. */
+@@ -1895,7 +1897,7 @@
+
+ retval = (FACE_PROPERTY_INSTANCE_1
+ (Fget_face (XVECTOR_DATA (instantiator)[0]),
+- prop, domain, ERROR_ME, no_fallback, depth));
++ prop, domain, ERROR_ME, !NILP (no_fallback), depth));
+
+ if (instantiator_len == 3 && !NILP (XVECTOR_DATA (instantiator)[2]))
+ retval = NILP (retval) ? Qt : Qnil;
+@@ -2015,7 +2017,7 @@
+ Lisp_Object domain,
+ Lisp_Object instantiator,
+ Lisp_Object depth,
+- int no_fallback)
++ Lisp_Object no_fallback)
+ {
+ /* When called, we're inside of call_with_suspended_errors(),
+ so we can freely error. */
+@@ -2027,7 +2029,7 @@
+
+ return FACE_PROPERTY_INSTANCE_1
+ (Fget_face (XVECTOR_DATA (instantiator)[0]),
+- Qbackground_placement, domain, ERROR_ME, no_fallback, depth);
++ Qbackground_placement, domain, ERROR_ME, !NILP (no_fallback), depth);
+ }
+ else
+ ABORT (); /* Eh? */
+diff -r d3dfe7ea1c31 -r d40990b854cf src/glyphs.c
+--- a/src/glyphs.c Mon Sep 23 08:01:37 2024 +0100
++++ b/src/glyphs.c Mon Sep 23 08:03:15 2024 +0100
+@@ -3179,7 +3179,7 @@
+ static Lisp_Object
+ image_instantiate (Lisp_Object specifier, Lisp_Object UNUSED (matchspec),
+ Lisp_Object domain, Lisp_Object instantiator,
+- Lisp_Object depth, int no_fallback)
++ Lisp_Object depth, Lisp_Object no_fallback)
+ {
+ Lisp_Object glyph = IMAGE_SPECIFIER_ATTACHEE (XIMAGE_SPECIFIER (specifier));
+ int dest_mask = XIMAGE_SPECIFIER_ALLOWED (specifier);
+@@ -3218,7 +3218,7 @@
+ assert (XVECTOR_LENGTH (instantiator) == 3);
+ return (FACE_PROPERTY_INSTANCE
+ (Fget_face (XVECTOR_DATA (instantiator)[2]),
+- Qbackground_pixmap, domain, no_fallback, depth));
++ Qbackground_pixmap, domain, !NILP (no_fallback), depth));
+ }
+ else
+ {
+diff -r d3dfe7ea1c31 -r d40990b854cf src/specifier.c
+--- a/src/specifier.c Mon Sep 23 08:01:37 2024 +0100
++++ b/src/specifier.c Mon Sep 23 08:03:15 2024 +0100
+@@ -2862,8 +2862,8 @@
+ if (HAS_SPECMETH_P (sp, instantiate))
+ val = call_with_suspended_errors
+ ((lisp_fn_t) RAW_SPECMETH (sp, instantiate),
+- Qunbound, Qspecifier, ERROR_ME_WARN, 5, specifier,
+- matchspec, domain, val, depth, no_fallback);
++ Qunbound, Qspecifier, ERROR_ME_WARN, 6, specifier,
++ matchspec, domain, val, depth, no_fallback ? Qt : Qnil);
+
+ if (!UNBOUNDP (val))
+ {
+@@ -2911,8 +2911,8 @@
+ if (HAS_SPECMETH_P (sp, instantiate))
+ val = call_with_suspended_errors
+ ((lisp_fn_t) RAW_SPECMETH (sp, instantiate),
+- Qunbound, Qspecifier, errb, 5, specifier,
+- matchspec, domain, val, depth, no_fallback);
++ Qunbound, Qspecifier, errb, 6, specifier,
++ matchspec, domain, val, depth, no_fallback ? Qt : Qnil);
+
+ if (!UNBOUNDP (val))
+ {
+diff -r d3dfe7ea1c31 -r d40990b854cf src/specifier.h
+--- a/src/specifier.h Mon Sep 23 08:01:37 2024 +0100
++++ b/src/specifier.h Mon Sep 23 08:03:15 2024 +0100
+@@ -147,8 +147,9 @@
+ name specifier_instance) to avoid creating "external"
+ specification loops.
+
+- NO_FALLBACK indicates that the method should not try the fallbacks
+- (and thus simply return Qunbound) in case of a failure to instantiate.
++ NO_FALLBACK non-nil indicates that the method should not try the
++ fallbacks (and thus simply return Qunbound) in case of a failure to
++ instantiate.
+
+ This method must presume that both INSTANTIATOR and MATCHSPEC are
+ already validated by the corresponding validate_* methods, and
+@@ -165,7 +166,7 @@
+ Lisp_Object domain,
+ Lisp_Object instantiator,
+ Lisp_Object depth,
+- int no_fallback);
++ Lisp_Object no_fallback);
+
+ /* Going-to-add method: Called when an instantiator is about
+ to be added to a specifier. This function can specify