GNU bug report logs -
#79057
30.1; `split-string` unexpectedly clears match data when called on an unrelated string.
Previous Next
To reply to this bug, email your comments to 79057 AT debbugs.gnu.org.
There is no need to reopen the bug first.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#79057
; Package
emacs
.
(Sun, 20 Jul 2025 10:51:02 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
Jennifer and Navid Madani <jnmadani <at> hotmail.com>
:
New bug report received and forwarded. Copy sent to
bug-gnu-emacs <at> gnu.org
.
(Sun, 20 Jul 2025 10:51:02 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
Run test1 in the code snippet below for reproducing the bug.
I tested it using emacs -Q on macOS and Ubuntu with the same result.
(setq *MULTI-LAB-ENTRY-RE* "^\\([[:alpha:]]\\)?[[:space:]]?\\([[:digit:]]\\{2\\}/[[:digit:]]\\{2\\}/[[:digit:]]\\{4\\}\\)[[:space:]]+\\([[:digit:]]\\{2\\}:[[:digit:]]\\{2\\}\\)[[:space:]]+\\(.+\\)")
(defun test1 ()
(let ((line "a 05/22/2025 14:32 BLOOD WBC 10.4 H K/uL 4.5 - 10.0"))
(string-match *MULTI-LAB-ENTRY-RE* line)
(message "match-data after string-match: %S" (match-data))
(split-string "dummy string") ;; Do NOT pass 'line' here
(message "match-data after split-string: %S" (match-data))
(message "group 1: %S" (match-string 1))))
(test1)
In GNU Emacs 30.1 (build 1, aarch64-apple-darwin21.6.0, NS
appkit-2113.65 Version 12.7.6 (Build 21H1320)) of 2025-02-24 built on
armbob.lan
Windowing system distributor 'Apple', version 10.3.2575
System Description: macOS 15.5
Configured using:
'configure --with-ns '--enable-locallisppath=/Library/Application
Support/Emacs/${version}/site-lisp:/Library/Application
Support/Emacs/site-lisp' --with-modules 'CFLAGS=-DFD_SETSIZE=10000
-DDARWIN_UNLIMITED_SELECT' --with-x-toolkit=no'
Configured features:
ACL GLIB GMP GNUTLS JPEG LIBXML2 MODULES NOTIFY KQUEUE NS PDUMPER PNG
RSVG SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER WEBP XIM ZLIB
Important settings:
value of $LANG: en_US.UTF-8
locale-coding-system: utf-8-unix
Major mode: ELisp/d
Minor modes in effect:
tooltip-mode: t
global-eldoc-mode: t
eldoc-mode: t
show-paren-mode: t
electric-indent-mode: t
mouse-wheel-mode: t
tool-bar-mode: t
menu-bar-mode: t
file-name-shadow-mode: t
global-font-lock-mode: t
font-lock-mode: t
blink-cursor-mode: t
minibuffer-regexp-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 sort mail-extr emacsbug message mailcap yank-media puny dired
dired-loaddefs rfc822 mml mml-sec password-cache epa derived epg rfc6068
epg-config gnus-util text-property-search time-date subr-x mm-decode
mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader
sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils
help-fns radix-tree cl-print byte-opt gv bytecomp byte-compile debug
backtrace help-mode find-func misearch multi-isearch cl-loaddefs cl-lib
rmc iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook
vc-hooks lisp-float-type elisp-mode mwheel term/ns-win ns-win
ucs-normalize mule-util term/common-win 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 kqueue cocoa ns multi-tty
make-network-process emacs)
Memory information:
((conses 16 53177 15615) (symbols 48 6410 0) (strings 32 16110 2304)
(string-bytes 1 411336) (vectors 16 11797)
(vector-slots 8 134092 12148) (floats 8 25 52) (intervals 56 375 7)
(buffers 992 12))
[smime.p7s (application/pkcs7-signature, attachment)]
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#79057
; Package
emacs
.
(Sun, 20 Jul 2025 12:06:01 GMT)
Full text and
rfc822 format available.
Message #8 received at 79057 <at> debbugs.gnu.org (full text, mbox):
tags 79057 notabug
thanks
> From: Jennifer and Navid Madani <jnmadani <at> hotmail.com>
> Date: Sun, 20 Jul 2025 00:44:20 +0000
>
> Run test1 in the code snippet below for reproducing the bug.
>
> I tested it using emacs -Q on macOS and Ubuntu with the same result.
>
>
> (setq *MULTI-LAB-ENTRY-RE* "^\\([[:alpha:]]\\)?[[:space:]]?\\([[:digit:]]\\{2\\}/[[:digit:]]\\{2\\}/[[:digit:]]\\{4\\}\\)[[:space:]]+\\([[:digit:]]\\{2\\}:[[:digit:]]\\{2\\}\\)[[:space:]]+\\(.+\\)")
>
>
> (defun test1 ()
> (let ((line "a 05/22/2025 14:32 BLOOD WBC 10.4 H K/uL 4.5 - 10.0"))
> (string-match *MULTI-LAB-ENTRY-RE* line)
> (message "match-data after string-match: %S" (match-data))
> (split-string "dummy string") ;; Do NOT pass 'line' here
> (message "match-data after split-string: %S" (match-data))
> (message "group 1: %S" (match-string 1))))
>
> (test1)
It isn't a bug: any Emacs function can modify match-data, unless its
doc string explicitly says it doesn't. And in this case, the doc
string even takes extra care to say it does:
Modifies the match data; use ‘save-match-data’ if necessary.
You need to change your code to use save-match-data.
Added tag(s) notabug.
Request was from
Eli Zaretskii <eliz <at> gnu.org>
to
control <at> debbugs.gnu.org
.
(Sun, 20 Jul 2025 12:06:02 GMT)
Full text and
rfc822 format available.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#79057
; Package
emacs
.
(Sun, 20 Jul 2025 12:23:02 GMT)
Full text and
rfc822 format available.
Message #13 received at 79057 <at> debbugs.gnu.org (full text, mbox):
Jennifer and Navid Madani <jnmadani <at> hotmail.com> writes:
> Run test1 in the code snippet below for reproducing the bug.
>
> I tested it using emacs -Q on macOS and Ubuntu with the same result.
>
>
> (setq *MULTI-LAB-ENTRY-RE* "^\\([[:alpha:]]\\)?[[:space:]]?\\([[:digit:]]\\{2\\}/[[:digit:]]\\{2\\}/[[:digit:]]\\{4\\}\\)[[:space:]]+\\([[:digit:]]\\{2\\}:[[:digit:]]\\{2\\}\\)[[:space:]]+\\(.+\\)")
>
>
> (defun test1 ()
> (let ((line "a 05/22/2025 14:32 BLOOD WBC 10.4 H K/uL 4.5 - 10.0"))
> (string-match *MULTI-LAB-ENTRY-RE* line)
> (message "match-data after string-match: %S" (match-data))
> (split-string "dummy string") ;; Do NOT pass 'line' here
> (message "match-data after split-string: %S" (match-data))
> (message "group 1: %S" (match-string 1))))
>
> (test1)
Hi,
I think it is expected behaviour. Both `string-match' and
`split-string' modify the *global* match data. Maybe you'd have to use
`save-match-data' to prevent this.
--
Manuel Giraud
Reply sent
to
Eli Zaretskii <eliz <at> gnu.org>
:
You have taken responsibility.
(Mon, 21 Jul 2025 11:22:01 GMT)
Full text and
rfc822 format available.
Notification sent
to
Jennifer and Navid Madani <jnmadani <at> hotmail.com>
:
bug acknowledged by developer.
(Mon, 21 Jul 2025 11:22:02 GMT)
Full text and
rfc822 format available.
Message #18 received at 79057-done <at> debbugs.gnu.org (full text, mbox):
> Date: Mon, 21 Jul 2025 00:00:14 -0400
> Cc: 79057 <at> debbugs.gnu.org
> From: Navid Madani <jnmadani <at> hotmail.com>
>
> You are absolutely correct—and sorry for the inconvenience. How did I miss that in the docstring?
>
> Thank you for all you do, and especially for Emacs! The most underrated software these days.
Thanks, I'm therefore closing this non-bug.
This bug report was last modified 24 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.