Subject: bug#79317: 31.0.50; Garbled text in corner case

From: OGAWA Hirofumi <[email-masked]>
Date: Tue, 26 Aug 2025 17:03:26 +0900

In current emacs, in corner case, the displayed text is garbled.
Simplified reproducible code is the following,

(with-temp-buffer
  (dotimes (_ 3)
    (insert "😀😀😀\n"))
  (add-to-invisibility-spec '(gnus-sum . t))
  (goto-char (point-min))
  (let ((starteol (line-end-position)))
    (forward-line 2)
  (search-backward "\n")
  (let ((ol (make-overlay starteol (point) nil t nil)))
    (overlay-put ol 'invisible 'gnus-sum)
    ;; here
    )))

At ";; here" position, first line uses proper font and text, but send
line is garbled text.  And if comment out the
`add-to-invisibility-spec', no garbled text.

Thanks.

In GNU Emacs 31.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version
 3.24.50, cairo version 1.18.4) of 2025-08-26 built on devron
Repository revision: 21b072c6074466f3ec7d2489b82e21d8b0cae265
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12101016
System Description: Debian GNU/Linux forky/sid

Configured using:
 'configure --with-x-toolkit=gtk3 --without-xim --with-imagemagick
 --with-wide-int --with-native-compilation=aot'

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ
IMAGEMAGICK JPEG LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT
MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND
SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER WEBP X11 XDBE XIM
XINERAMA XINPUT2 XPM XRANDR GTK3 ZLIB

Important settings:
  value of $LANG: ja_JP.UTF-8
  value of $XMODIFIERS: @im=ibus
  locale-coding-system: utf-8-unix

Major mode: Group

Minor modes in effect:
  gnus-topic-mode: t
  gnus-undo-mode: t
  bug-reference-mode: t
  server-mode: t
  editorconfig-mode: t
  flycheck-pos-tip-mode: t
  global-flycheck-mode: t
  global-company-mode: t
  company-mode: t
  auto-insert-mode: t
  yas-global-mode: t
  yas-minor-mode: t
  electric-pair-mode: t
  icomplete-mode: t
  which-key-mode: t
  savehist-mode: t
  repeat-mode: t
  tty-tip-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  minibuffer-regexp-mode: t
  buffer-read-only: t
  column-number-mode: t
  line-number-mode: t
  indent-tabs-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
None found.

Features:
(shadow emacsbug lisp-mnt bbdb-message mailalias jka-compr shr-color
color mule-util sort gnus-cite mm-archive mail-extr textsec uni-scripts
idna-mapping ucs-normalize uni-confusable textsec-check gnus-bcklg
bbdb-gnus-aux qp gnus-ml disp-table go-mode find-file ffap hl-line
elfeed-show elfeed-search bookmark elfeed-csv elfeed elfeed-curl
elfeed-log elfeed-db elfeed-lib avl-tree url-queue xml-query gnus-topic
url-http url-gw url-cache utf-7 epa-file network-stream nsm nnfolder
bbdb-gnus nnnil dired-aux flyspell ispell vc-hg vc-git diff-mode
track-changes files-x vc-bzr vc-src vc-sccs vc-svn vc-cvs vc-rcs
log-view log-edit bbdb-mua spam spam-stat bbdb-com crm bbdb bbdb-site
timezone gnus-uu yenc gnus-demon gnus-async gnus-delay gnus-draft
gnus-agent gnus-srvr gnus-score score-mode nnvirtual nntp gnus-cache
gnus-msg gnus-art mm-uu mml2015 mm-view mml-smime smime gnutls dig
gnus-sum shr pixel-fill kinsoku url-file svg dom nndraft nnmh
gnus-xoauth2 oauth2-ext plstore gnus-group gnus-undo gnus-start
gnus-dbus dbus company-cscope company-yasnippet grep-context dash
comp-run comp-common xml gnus-cloud nnimap nnmail mail-source utf7 nnoo
parse-time iso8601 gnus-spec gnus-int gnus-range gnus-win gnus nnheader
range message sendmail yank-media puny rfc822 mml mml-sec epa derived
epg rfc6068 epg-config gnus-util time-date mm-decode mm-bodies mm-encode
mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums mail-prsvr
mailabbrev mail-utils gmm-utils mailheader add-log easy-mmode pcvs-util
vc vc-dispatcher bug-reference thingatpt server auth-source-pass
url-auth generic-x editorconfig editorconfig-core
editorconfig-core-handle editorconfig-fnmatch flycheck-relint relint
compile text-property-search comint ansi-osc xr flycheck-pos-tip pos-tip
flycheck find-func rx company-oddmuse company-keywords company-etags
etags fileloop generator xref project ring company-gtags
company-dabbrev-code company-dabbrev company-files company-clang
company-capf company-cmake company-semantic company-template
company-bbdb company pcase autoinsert cl-extra yasnippet help-mode
elec-pair icomplete which-key dircolors-faces ansi-color dired-x
savehist advice browse-kill-ring delsel tab-bar-session desktop frameset
repeat tty-tip mozc-im-plus mozc-cand-posframe s posframe mozc
vcard-autoloads startup-elisp-autoloads rfc-autoloads
mozc-im-plus-autoloads misc-autoloads magit-mini-autoloads
lookup-autoloads langtool-autoloads gt-autoloads grammar-check-autoloads
gnus-xoauth2-autoloads cxrefs-autoloads company-cscope-autoloads
bbdb-loaddefs cus-edit pp cus-start cus-load wid-edit
browse-kill-ring-autoloads cmake-mode-autoloads company-autoloads
coterm-autoloads csv-mode-autoloads dockerfile-mode-autoloads
dpkg-dev-el-autoloads debian-el-autoloads debian-el dired dired-loaddefs
dumb-jump-autoloads elfeed-autoloads expand-region-autoloads
flycheck-relint-autoloads flycheck-rust-autoloads dash-autoloads
flycheck-autoloads git-modes-autoloads git-timemachine-autoloads info
gnuplot-autoloads go-mode-autoloads graphviz-dot-mode-autoloads
grep-context-autoloads markdown-mode-autoloads meson-mode-autoloads
mozc-cand-posframe-autoloads mozc-autoloads php-mode-autoloads
po-mode-autoloads popup-autoloads pos-tip-autoloads posframe-autoloads
relint-autoloads rpm-spec-mode-autoloads rust-mode-autoloads s-autoloads
vundo-autoloads xr-autoloads yaml-mode-autoloads yasnippet-autoloads
package browse-url xdg url url-proxy url-privacy url-expand url-methods
url-history url-cookie generate-lisp-file url-domsuf url-util mailcap
url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs icons
password-cache json subr-x map byte-opt gv bytecomp byte-compile
url-vars cl-loaddefs cl-lib japan-util rmc iso-transl tooltip cconv
eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type
elisp-mode mwheel term/x-win x-win term/common-win x-dnd touch-screen
tool-bar dnd fontset image regexp-opt fringe tabulated-list replace
newcomment text-mode lisp-mode prog-mode register page tab-bar menu-bar
rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock
font-lock syntax font-core term/tty-colors frame minibuffer nadvice seq
simple cl-generic indonesian philippine cham georgian utf-8-lang
misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms
cp51932 hebrew greek romanian slovak czech european ethiopic indian
cyrillic chinese composite emoji-zwj charscript charprop case-table
epa-hook jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button
loaddefs theme-loaddefs faces cus-face macroexp files window
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget keymap hashtable-print-readable backquote threads dbusbind
inotify lcms2 dynamic-setting system-font-setting font-render-setting
cairo gtk x-toolkit xinput2 x multi-tty move-toolbar
make-network-process tty-child-frames native-compile emacs)

Memory information:
((conses 16 1680865 1768522) (symbols 48 30083 37)
 (strings 32 1918695 60593) (string-bytes 1 78848833)
 (vectors 16 545198) (vector-slots 8 4653235 365494)
 (floats 8 148617 128624) (intervals 56 17321 2647) (buffers 1064 33))

-- 
OGAWA Hirofumi <[email-masked]>