Commit graph

182372 commits

Author SHA1 Message Date
Vincent Belaïche
4870bc06fa ses doc, add comment how to compile individually the manuals. 2026-05-29 09:27:51 +02:00
Vincent Belaïche
02c806cb47 Use a shell function to delay message.
Do not insert a message between AC_MSG_CHECKING and AC_MSG_RESULT.
2026-05-29 09:27:51 +02:00
Vincent Belaïche
5eaacff65b Add a checking/result message for DOCLANGS derivation. 2026-05-29 09:27:50 +02:00
Vincent Belaïche
e3b2d6f862 Set DOCLANGS with autoconf depending on texinfo.tex/texindex versions. 2026-05-29 09:27:47 +02:00
Vincent Belaïche
2455b32dd3 Move Texinfo related autoconf code to a new separate texinfo.m4 file. 2026-05-29 09:25:18 +02:00
Vincent Belaïche
ca346be53c Handle the info duplicate target issue as close as possible to the conflict.
The problems are:
- filtering out the info from info making templates misses some dependencies.
- naming PHONY target info.info is misleading, as there is also an info.info
  in the info build directory
2026-05-29 09:25:17 +02:00
Vincent Belaïche
0275b41d1c Generate manual for other languages than default.
* doc/translations/fr/info_common.mk:
* doc/translations/default/info_common.mk: New file.

* doc/misc/Makefile.in: Get INFO_COMMON from language respective
info_common.mk helper script.
(INFO_TARGETS): Make it depend from info_common.mk settings.
(ORG_SETUP, ORG_SRC): Make it point at language specific sub-directory.
(texi_sources, DVI_TARGETS, HTML_TARGETS, PDF_TARGETS)
(PS_TARGETS, echo-info, info_template,efaq%$(lang_suffix).dvi)
(efaq%$(lang_suffix).pdf, efaq%$(lang_suffix).texi)
(efaq%$(lang_suffix).html): Make it use language specific suffix.
(${buildinfodir}/%$(lang_suffix).info, %$(lang_suffix).dvi)
(%$(lang_suffix).pdf, %$(lang_suffix).html, %$(lang_suffix).ps):
Make it use language specific suffix/subdirectory.

* Makefile.in (DOCLANGS): New variable, list of languages.
(install-info, uninstall): List targets into 'info_misc' for all languages.
(TAGS tags): Make tags for all languages.
($(DOCS)): Create target for all languages.
(texi_misc_fr, texi_misc_default): Set macro for all languages.
(srcdir_doc_info_dir_inputs): Macro concatenate texi_misc_lll for
all language lll.
2026-05-29 09:25:15 +02:00
Vincent Belaïche
3621ef5c42 Add dependance of info file on source.
Suppress also superfluous exta .info extension of info.info.
2026-05-29 09:25:14 +02:00
Stefan Monnier
0a5e69eaef lisp/visual-wrap.el (visual-wrap--content-prefix): Adjust doc
Suggested by Andrea Alberti <a.alberti82@gmail.com>.
2026-05-28 17:36:19 -04:00
Eli Zaretskii
7ee3314398 Speed-up cursor motion under 'display-line-numbers-mode'
* src/xfaces.c (Finternal_lisp_face_equal_p): Accept an additional
optional argument INHERIT; if non-nil, consider two faces equal if
one inherits from the other and doesn't specify any other
attributes to be different from it.
* src/xdisp.c (try_cursor_movement, try_window_id): Call
'Finternal_lisp_face_equal_p' with non-nil INHERIT argument, to
speed up redisplay in the default case when line numbers are shown.
(Bug#81133)

* test/src/xfaces-tests.el (xfaces-test-face-equality): New test.
2026-05-28 18:36:11 +03:00
Michael Albinus
833553dd9a dbus-call-method-asynchronously supports also an ERROR-HANDLER
* doc/misc/dbus.texi (Asynchronous Methods): HANDLER can also be
(HANDLER . ERROR-HANDLER).

* etc/NEWS: Mention ERROR-HANDLER of dbus-call-method-asynchronously.

* lisp/net/dbus.el (dbus-call-method-asynchronously): Adapt docstring.
(dbus-check-event, dbus-handle-event): HANDLER can also be
(HANDLER . ERROR-HANDLER).

* src/dbusbind.c (Fdbus_message_internal): HANDLER can also be
(HANDLER . ERROR-HANDLER).  (Bug#80952)

* test/lisp/net/dbus-tests.el (dbus--test-method-another-handler)
(dbus--test-method-error-handler): New defvars.
(dbus--test-method-another-handler)
(dbus--test-method-error-handler): New functions.
(dbus-test04-call-method-error-handler): New test.
(dbus-test10-keep-fd): Extend test.
2026-05-28 10:03:05 +02:00
Po Lu
de926d281a Fix the MSDOS build
* msdos/sedlibmk.inp (GL_GNULIB_STDC_[^ =] &c.): Rename from
GL_STDC_... and define to 1 before other variables prefixed
GL_GNULIB_ are defined to 0.
(NEXT_AS_FIRST_DIRECTIVE_STDBIT_H)
(NEXT_AS_FIRST_DIRECTIVE_STDCOUNTOF_H, STDCOUNTOF_H): Define.
(GL_HAVE_STDBIT_H_CONDITION): Replace
GL_GENERATE_STDBIT_H_CONDITION.
(CXX_HAVE_STDCOUNTOF_H, GL_GNULIB_STREQ, GL_GNULIB_MEMEQ)
(GL_GNULIB_STRNUL, GL_GENERATE_STDCOUNTOF_H_CONDITION):
Substitute "1".

* src/conf_post.h (_REGEX_AVOID_UCHAR_H) [MSDOS]: Define to 1.

* src/term.c (init_tty) [MSDOS]: Set TN_max_colors to 16,
which was deleted inadvertently with recent MS Windows
modifications.

* config.bat: Rename stdcountof.in.h appropriately.
2026-05-28 12:59:55 +08:00
Po Lu
330b4e2a94 Fix the Android build again
* exec/trace.c (ARRAYELTS, establish_seccomp_filter): Restore
ARRAYELTS, since Gnulib is not available in the exec library.
2026-05-28 11:31:16 +08:00
Paul Eggert
6728239f32 Use compound literal in lisp_h_make_fixnum_wrap
* src/lisp.h (lisp_h_make_fixnum_wrap) [USE_LSB_TAG]: Use compound
literal, not cast.  This pacifies -Wuseless-cast when building on
Fedora 44 x86-64 with ‘./configure --enable-gcc-warnings
CFLAGS='-O2 -DDEFINE_KEY_OPS_AS_MACROS'’.
2026-05-27 14:01:40 -07:00
Paul Eggert
54b6ea14a9 Port MinGW GCC 9.2 image.c fix to non MS-Windows
Avoid useless casts on GCC 14+ platforms on non MS-Windows, by
using a cast only if HAVE_NTGUI.  That cast should not provoke
-Wuseless-cast regardless of how MS-Windows defines HDC, since it
casts to an Emacs-defined type.  This change lets the code compile
again on Fedora 44 with --enable-gcc-warnings.
* src/dispextern.h (PIX_CONTAINER_TO_CONTEXT): New macro.
It defaults to the identity macro.
(Emacs_Pix_Context): Default to Emacs_Pix_Container.
* src/image.c (pbm_load, png_load_body, jpeg_load_body)
(tiff_load, gif_load, svg_load_image): Use the new macro
instead of a cast.
2026-05-27 08:37:39 -07:00
Collin Funk
967d8182cf pgtk: Fix -Wint-conversion compilation error.
* src/pgtkgui.h (WINDOW_HANDLE_UINTPTR): New macro to override the
default one in src/dispextern.h.
2026-05-27 07:59:54 -07:00
Eli Zaretskii
689448a041 Unbreak MS-Windows build broken by Gnulib sync
* src/conf_post.h: Add leading underscores to 'gl_consolesafe_*'
functions, to follow Gnulib's renaming.
* src/image.c (pbm_load, png_load_body, jpeg_load_body)
(tiff_load): Revert previous change that removed "useless" casts,
as removing them triggers warnings from MinGW GCC 9.2.
2026-05-27 16:30:23 +03:00
Paul Eggert
b174382a2d Also copy lib/mini-gmp-gnulib.c from Gnulib 2026-05-26 22:21:08 -07:00
Paul Eggert
225876e979 ARRAYELTS → countof
C2y will standardize countof as the macro that Emacs uses the name
ARRAYELTS for.  Switch to the standard name, which is supported
by GCC 16+, by Clang 21, and by the Gnulib stdcountof-h module already
in use for compilers that do not support countof.
Also, use countof in a few places where we missed using ARRAYELTS.
* admin/coccinelle/arrayelts.cocci: Suggest countof, not ARRAYELTS.
* admin/merge-gnulib (GNULIB_MODULES): Add stdcountof-h,
as it is now a direct rather than an indirect dependency.
* exec/trace.c, src/lisp.h, src/sfnt.c: Include <stdcountof.h>.
(ARRAYELTS): Remove.  All uses replaced by countof.
* lib-src/ebrowse.c, lib-src/etags.c, lib-src/make-docfile.c:
* lib-src/seccomp-filter.c, lwlib/lwlib-Xaw.c:
Prefer <stdcountof.h> and countof to doing things by hand.
2026-05-26 21:57:20 -07:00
Paul Eggert
834ff524f9 Update from Gnulib by running admin/merge-gnulib
In addition to the automatic changes, also do the following,
needed due to recent Gnulib changes.
* admin/merge-gnulib (AVOIDED_MODULES): Add btoc32,
c32_apply_type_test, c32_get_type_test, c32isalnum, c32rtomb,
c32tolower, c32toupper, localeinfo, mbrtoc32-regular.
Remove btowc, iswctype, mbrtowc, wcrtomb, wctype, wctype-h.
Also remove iswblank, iswdigit, iswxdigit, locale-h, raise,
stdarg-h, some of which perhaps could have been removed earlier.
* configure.ac (_REGEX_AVOID_UCHAR_H): New macro.
2026-05-26 21:57:20 -07:00
Paul Eggert
6fb6a4f76d Pacify GCC better when building the test module
* test/Makefile.in ($(test_module)):
Compile mini-gmp-gnulib.c, not mini-gmp.c,
so that we get its pragmas to pacify GCC.
2026-05-26 21:57:19 -07:00
Paul Eggert
5d8bb14d3b Omit useless casts found by GCC 16
GCC 16’s -Wuseless-cast warning can be useful.
Fix the useless casts it identifies, and also fix false positives
by using compound literals, which are safer anyway than casts.
* src/composite.c (composition_adjust_point)
(Ffind_composition_internal):
* lwlib/xlwmenu.c (xlwMenuResources, xlwMenuClassRec)
(resource_widget_value, XlwMenuDestroy, Select):
* src/alloc.c (process_mark_stack):
* src/data.c (Faref):
* src/emacs-module.c (module_extract_big_integer):
* src/fileio.c (Finsert_file_contents):
* src/frame.h (FRAME_MESSAGE_BUF_SIZE):
* src/gtkutil.c (xg_tool_item_stale_p, update_frame_tool_bar):
* src/image.c (pbm_load, png_load_body, jpeg_load_body)
(tiff_load, gif_load):
* src/pdumper.c (ptrdiff_t_to_dump_off, dump_queue_dequeue)
(field_relpos, dump_field_emacs_ptr)
(dump_object_start_pseudovector, pdumper_remember_scalar_impl)
(pdumper_load, syms_of_pdumper):
* src/regex-emacs.c (BUF_PUSH, BUF_PUSH_2, POINTER_TO_OFFSET):
* src/xdisp.c (remember_mouse_glyph, pint2str):
* src/xterm.c (cvt_string_to_pixel, handle_one_xevent):
Omit useless casts.  Perhaps they were formerly needed,
but they should not be needed now.
* src/alloc.c (Fmemory_info):
* src/category.c (Fdefine_category, Fmodify_category_entry):
* src/data.c (Fash):
* src/dispextern.h (GLYPH_CODE_P):
* src/emacs.c (load_seccomp):
* src/fns.c (Flocale_info, maybe_resize_hash_table):
* src/indent.c (check_display_width):
* src/json.c (symset_size):
* src/lisp.h (XUNTAG, BOOL_VECTOR_LENGTH_MAX, obarray_size)
(hash_table_index_size):
* src/lread.c (make_obarray, grow_obarray, Fobarray_clear):
* src/menu.c (digest_single_submenu, x_popup_menu_1):
* src/term.c (init_tty):
* src/widget.c (update_wm_hints):
* src/xdisp.c (truncate_echo_area):
* src/xfns.c (x_set_border_pixel):
* src/xfont.c (xfont_match, xfont_open):
* src/xmenu.c (set_frame_menubar):
* test/src/emacs-module-resources/mod-test.c (emacs_module_init):
Use compound literal instead of a cast that is useless in
some platforms but not others.
* src/dispextern.h, src/haikugui.h, src/w32gui.h:
(WINDOW_HANDLE_UINTPTR): New macro.
* src/frame.c (gui_report_frame_params):
* src/xterm.c (x_try_cr_xlib_drawable):
Use it.
* src/lisp.h (XUNTAG): And tag with UINTPTR_MAX to pacify
gcc warning about a constant out of range.
(hash_idx_t): Make it int_least32_t, as it need not be exactly 32 bits.
(PRIdHASH_IDX): New macro.
* src/pdumper.c (dump_queue_dequeue): Use it.
* src/profiler.c (setup_cpu_timer): Make a local EMACS_INT
rather than int, to avoid need for casting later.
* src/syntax.c (uninitialized_interval):
Use 1u rather than 1 so the cast is always useful.
A compound literal wouldn’t do here, as this macro
needs to be an integer constant expression.
* src/xfns.c (XICCallback, XICProc): Remove macros.
(Xxic_preedit_start_callback): Use a cleaner way to specify it,
avoiding the need for type macros, and for a cast
if HAVE_XICCALLBACK_CALLBACK.
* src/xterm.c (handle_one_xevent): 2nd arg is now XEvent *
on all platforms, as there is no need to diverge, and
diverging meant we needed lots of unnecessary casts.
2026-05-26 21:57:19 -07:00
Andrea Alberti
ca5e9976b1 Pixel-direct alignment in visual-wrap-prefix-mode (bug#81039)
`visual-wrap--content-prefix' previously returned a column count
computed as

    (max (string-width prefix)
         (ceiling (string-pixel-width prefix) avg-space-width))

with two problems:

* `string-width' ignores `buffer-invisibility-spec', so an invisible
  prefix (hidden ATX markers under `markdown-ts-hide-markup', for
  example) still reserved its character count on line 1 via a
  `min-width' display property, shifting the visible heading right.

* With variable-pitch fonts, rounding the prefix width up to whole
  columns added visible padding whenever the natural width did not
  fall on an exact column boundary.

Return the prefix's natural pixel width via `string-pixel-width'
instead, which accounts for any display transformation applied to
the prefix (invisibility, `display' replacements, text scaling,
proportional fonts).  Drop the `min-width' property from
`visual-wrap--apply-to-line' so line 1 renders at its natural width.
Switch the continuation `wrap-prefix' to a mixed-unit `:align-to'
sum form:

    (space :align-to (+ (PIX) (EXTRA-INDENT . width)))

where PIX is the prefix's pixel width and EXTRA-INDENT is
`visual-wrap-extra-indent' in canonical character widths.  The
display engine resolves each term per the active frame and sums
them, so no Lisp-level unit conversion is needed.

Since `min-width' is no longer installed, the accumulation cycle
that commit 81a5beb8af (bug#73882) worked around cannot recur.
Drop the `min-width' strip from `visual-wrap--content-prefix' and
the `min-width' removal from `visual-wrap--remove-properties'.
Keep `min-width' in `visual-wrap--safe-display-specs' so that
lines where other modes install it are not skipped.

* lisp/visual-wrap.el (visual-wrap--content-prefix): Return pixel
width instead of column count; drop the `min-width' strip.
(visual-wrap--apply-to-line): Drop `min-width' on line 1; use
mixed-unit `:align-to' sum form for the continuation wrap-prefix.
(visual-wrap--adjust-prefix): Handle only string prefixes; the
numeric (pixel) case is now handled inline in `--apply-to-line'
via the mixed-unit `:align-to' sum form.
(visual-wrap--remove-properties): Drop `min-width' removal.
(visual-wrap--safe-display-specs): Add note about `min-width'.
* test/lisp/visual-wrap-tests.el: Update expected `wrap-prefix'
values to the new sum form.
(visual-wrap-tests/invisible-prefix): New test motivated by bug#81039.
(visual-wrap-tests/negative-extra-indent): New test; verify that a
large negative `visual-wrap-extra-indent' produces a valid
wrap-prefix (the display engine clamps the stretch to zero).
* test/manual/visual-wrap-test.el: New file.  Manual test suite
for visual-eyeball verification of prefix alignment behavior.

Reported-by: Andrea Alberti <a.alberti82@gmail.com>
Co-authored-by: Stefan Monnier <monnier@iro.umontreal.ca>
2026-05-26 16:56:32 -04:00
Stefan Monnier
02fb01166e Gnus: Prefer passing functions to message-add-action
Building code with code is tricky.  E.g. the code in gnus-draft-setup
suffered from a security issue because it forgot to quote
some arguments (see commit 142b1e0d4c).

* lisp/gnus/gnus-salt.el (gnus-pick-setup-message):
* lisp/gnus/gnus-msg.el (gnus-inews-add-send-actions):
* lisp/gnus/gnus-draft.el (gnus-draft-setup): Prefer passing functions
to message-add-action over passing it ELisp expressions.

* lisp/gnus/message.el (message-do-actions): Drop errors but not silently.
2026-05-26 15:54:48 -04:00
Pip Cet
25fb3f9b46 Fix self-insert-command in multibyte buffers (bug#81129)
* src/cmds.c (internal_self_insert): Pass PT_BYTE to FETCH_BYTE, not
PT.
2026-05-26 14:10:16 +00:00
Stefan Monnier
72b50901ef lisp/emacs-lisp/package.el (package-quickstart-refresh): Delete stale elc 2026-05-25 17:01:07 -04:00
Eli Zaretskii
ea2110b6e5 ; * src/sfntfont-android.c (GET_SCANLINE_BUFFER): Fix a typo. 2026-05-25 18:39:26 +03:00
Harald Jörg
217064e9dc ;cperl-mode.el: Fix fontification edge cases
These were reported by happy-barney on GitHub
https://github.com/HaraldJoerg/cperl-mode/issues

* lisp/progmodes/cperl-mode.el (cperl-init-faces): Don't mistake
$method as a method declaration.
Move matcher for "use require" higher to prevent "require" being
fontified as keyword.

* test/lisp/progmodes/cperl-mode-resources/sub-names.pl: Add a
test case for $method

* test/lisp/progmodes/cperl-mode-tests.el
(cperl-test-fontify-declarations): Add a test case for a module
name looking like a keyword
(cperl-test-fontify-sub-names): Verify that $method does not
declare a method
2026-05-25 11:23:34 +02:00
Po Lu
6d15d68e1f ; * src/sfntfont-android.c (GET_SCANLINE_BUFFER): Correct commentary. 2026-05-25 11:50:03 +08:00
Po Lu
d6215451fa Fix parsing of font metadata tables on Android
* src/sfnt.c (sfnt_read_meta_table): Allocate
`directory->length' bytes after the map rather than in place of
it.
2026-05-25 11:29:32 +08:00
Po Lu
7cef362581 Fix the Android build
* src/sfnt.c (sfnt_fill_span) [NDEBUG]: Don't access `row_end'
when not defined.
2026-05-25 11:23:30 +08:00
Po Lu
44013f6be7 Revert "Don’t silently truncate file names in exec.c"
This reverts commit 3461b450c5.

Gnulib and intprops.h are not available from within the exec helper.
2026-05-25 11:21:00 +08:00
Pip Cet
b72dcebdab Avoid crash in self-insert-command with non-ASCII auto-fill
* src/cmds.c (internal_self_insert): If the autofill function changed
the newline character we inserted, don't attempt to restore point.
* test/src/cmds-tests.el (self-insert-nonascii-autofill): New.
2026-05-24 12:32:28 +00:00
Pip Cet
7f8ac8bf6f Avoid crash in self-insert-command for peculiar arguments
* src/cmds.c (internal_self_insert): Don't call auto-fill-function
after inserting zero newlines.
* test/src/cmds-tests.el (self-insert-zero-newlines): New.
2026-05-24 11:51:38 +00:00
Pip Cet
94dbab2fe4 Fix 'do_casify_natnum' for events with all flags set
* src/casefiddle.c (do_casify_natnum): Extend range a little, to cover
character events with all modifier flags set.
* test/src/casefiddle-tests.el (casefiddle-allflags): New test.
2026-05-24 10:11:33 +00:00
Pip Cet
c146e3643c Fix off-by-one error in 'styled_format'
This would (rarely) result in composition properties being shared
across the concatenation of two copies of a string.

* src/editfns.c (styled_format): Include the first argument in the
range.
* test/src/editfns-tests.el (editfns-tests--format-composition-property):
New.
2026-05-24 09:23:05 +00:00
Yuan Fu
6932c940fd
Fold calls to fix_position into treesit_check_position (bug#80830)
* src/treesit.c (treesit_check_position): Return the validated
value.
(Ftreesit_node_first_child_for_pos):
(Ftreesit_node_descendant_for_range):
(Ftreesit_query_capture):
(Ftreesit__linecol_at): Fold calls to fix_position into
treesit_check_position in treesit.c.
2026-05-23 22:55:31 -07:00
Paul Eggert
e7a333f18e EVENT_INIT via a compound literal
This pacifies GCC 16.1.1 x86-64 -Warray-bounds when compiling with
-fsanitize=address.  It’s also cleaner on more-typical platforms.
* src/termhooks.h (EVENT_INIT): Define via a compound literal
rather than via a memset plus an assignment.  This evaluates the
argument lvalue only once, and is more likely to catch type errors.
2026-05-23 19:18:54 -07:00
Paul Eggert
7bfde4d50b sfnt.c eassert vs assert
Use eassert uniformly, instead of assert.
* src/sfnt.c [!TEST]: Do not include <assert.h> or use assert.
(eassert) [TEST]: New macro.
2026-05-23 19:18:54 -07:00
Paul Eggert
c4e20777c2 Better size overflow checking for sfnt.c
* src/sfnt.c (memory_full_up) [TEST]: New static function.
(xmalloc, xcalloc, xrealloc): Use it instead of aborting.
(eassert) [TEST]: Remove; no longer needed.
(xaddmalloc, xaddrealloc): New static convenience functions.
(sfnt_read_cmap_format_12, sfnt_read_loca_table_short)
(sfnt_read_loca_table_long, sfnt_read_glyf_table)
(sfnt_read_simple_glyph, sfnt_read_compound_glyph)
(sfnt_read_glyph, sfnt_build_append, sfnt_build_outline_edges)
(sfnt_raster_glyph_outline, sfnt_build_outline_fedges)
(sfnt_raster_glyph_outline_exact, sfnt_read_hmtx_table)
(sfnt_read_name_table, sfnt_read_meta_table)
(sfnt_read_ttc_header, sfnt_read_fpgm_table)
(sfnt_read_prep_table, sfnt_create_uvs_context)
(sfnt_read_gvar_table, sfnt_read_packed_deltas)
(sfnt_vary_simple_glyph, sfnt_vary_compound_glyph):
Use the new functions to test for size overflow more reliably.
Use a cleaner way to decide whether a pointer addresses
the heap not the stack and thus needs freeing.
Fix a few more unlikely overflows.
(sfnt_read_cmap_format_12): The recently-added eassert is no
longer needed, so remove it.
(sfnt_read_simple_glyph): Initialize glyph->simple early
to simplify later code, as is done in similar functions.
Complicate size test to avoid potential unsigned overflow.
2026-05-23 19:18:54 -07:00
Paul Eggert
7e0d4fae01 Simplify sfnt.c by using long long
Even the earliest Android had plain ‘long long’,
so use that instead of doing it by hand.
* src/sfnt.c (struct sfnt_large_integer, sfnt_multiply_divide_1)
(sfnt_multiply_divide_2, sfnt_large_integer_add)
(sfnt_multiply_divide_round) [!INT64_MAX]: Remove.
(sfnt_multiply_divide, sfnt_multiply_divide_rounded)
(sfnt_mul_fixed, sfnt_mul_fixed_round, sfnt_div_fixed)
(sfnt_div_f26dot6, sfnt_mul_f26dot6, sfnt_mul_f26dot6_round)
(sfnt_mul_f2dot14, sfnt_dot_fix_14): Simplify by using long long.
2026-05-23 19:18:54 -07:00
Paul Eggert
2e91ed5f12 Prefer ptrdiff_t to size_t when either will do
Signed types are a bit safer, as they avoid some comparison confusion
and -fsanitize=undefined can check more misuses of them.
* src/alloc.c (lisp_malloc, lisp_align_malloc)
(allocate_string_data, allocate_vector_from_block, object_bytes):
* src/coding.c (from_unicode_buffer):
* src/decompress.c (acc_size, accumulate_and_process_md5):
* src/emacs.c (load_seccomp, shut_down_emacs):
* src/fns.c (sxhash_bignum):
* src/ftfont.c (get_adstyle_property):
* src/image.c (lookup_image, xpm_init_color_cache)
(xpm_cache_color):
* src/json.c (json_out_str, struct json_parser)
(json_make_object_workspace_for_slow_path)
(json_make_object_workspace_for, json_parse_array)
(json_parse_object):
* src/sysdep.c (get_current_dir_name_or_unreachable)
(init_sys_modes, convert_speed):
* src/termchar.h (struct tty_display_info):
* src/textconv.h (struct textconv_conversion_text):
* src/xfns.c (struct x_xim_text_conversion_data)
(x_encode_xim_text):
* src/xselect.c (struct transfer, c_size_for_format)
(x_size_for_format, selection_data_for_offset)
(selection_data_size, x_start_selection_transfer)
(x_continue_selection_transfer):
Prefer ptrdiff_t to size_t when either will do.
* src/term.c (Ftty__set_output_buffer_size):
Limit output buffer size to PTRDIFF_MAX as well as to SIZE_MAX.
2026-05-23 19:18:53 -07:00
Paul Eggert
82ad01b631 Fix format typos in never-executed textconv.c
* src/textconv.c (really_commit_text, really_replace_text):
Use %td not %zd.
2026-05-23 19:18:53 -07:00
Paul Eggert
fbd2f781b2 Be more careful about X selection sizes
* src/xselect.c (selection_data_for_offset):
Offset is size_t, not long, since that’s what caller passes.
(selection_data_size): Truncate large selection sizes to a value
that is more likely to work without involving undefined behavior.
Do not exceed X_ULONG_MAX which is all X can handle, or
PTRDIFF_MAX which can confuse underlying code.
(x_start_selection_transfer): Invoke selection_data_size just once.
2026-05-23 19:18:53 -07:00
Paul Eggert
1bee33c1c8 sfnt_parse_languages does not need USE_SAFE_ALLOCA
* src/sfntfont.c (sfnt_parse_languages):
Simplify so that no local array is needed.
2026-05-23 19:18:53 -07:00
Paul Eggert
ece22174e5 Omit useless android_get_image casts
* src/android.c (android_get_image):
Omit useless and confusing casts.
2026-05-23 19:18:53 -07:00
Paul Eggert
4e5103a980 Document PTRDIFF_MAX <= SIZE_MAX assumption
* src/alloc.c: New static_assert.
2026-05-23 19:18:53 -07:00
Paul Eggert
d12e8a94f7 Update src/alloc.c comments 2026-05-23 19:18:53 -07:00
Paul Eggert
19264b6912 adjust_glyph_matrix reallocation improvement
* src/dispnew.c (adjust_glyph_matrix):
Use xfree + xcalloc instead of xnrealloc + memset,
as there is no need to preserve the old contents.
2026-05-23 19:18:53 -07:00
Paul Eggert
64eb869b68 Be more careful about size multiplication
* src/alloc.c (xcalloc): New function.
* src/dispnew.c (save_current_matrix):
* src/fns.c (Finternal__hash_table_histogram):
* src/nsfns.m (Fns_display_monitor_attributes_list):
* src/pgtkfns.c (Fpgtk_display_monitor_attributes_list):
* src/pgtkselect.c (pgtk_own_selection):
* src/profiler.c (make_log):
* src/sfnt.c (sfnt_poly_edges_exact):
* src/xfns.c (x_get_monitor_attributes_xinerama)
(x_get_monitor_attributes_xrandr, Fx_display_monitor_attributes_list):
Use it instead of multiplying by hand, conceivably with overflow.
* src/profiler.c (make_log):
Check for overflow in internal size calculations.
Use xnmalloc instead of multiply + xmalloc.
* src/sfnt.c (xzalloc) [TEST]: Remove, replacing with ...
(xicalloc) [TEST]: ... this new function.  All callers changed.
(eassert) [TEST]: New macro.
* src/treesit.c (treesit_calloc_wrapper): Remove, replacing its
use with xcalloc.
2026-05-23 19:18:53 -07:00