GNU bug report logs - #54639
26.1; (not (string-empty-p nil)) returns true

Previous Next

Package: emacs;

Reported by: Ernesto Alfonso <erjoalgo <at> gmail.com>

Date: Wed, 30 Mar 2022 16:21:01 UTC

Severity: minor

Tags: wontfix

Found in version 26.1

Done: Lars Ingebrigtsen <larsi <at> gnus.org>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 54639 in the body.
You can then email your comments to 54639 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#54639; Package emacs. (Wed, 30 Mar 2022 16:21:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Ernesto Alfonso <erjoalgo <at> gmail.com>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Wed, 30 Mar 2022 16:21:01 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Ernesto Alfonso <erjoalgo <at> gmail.com>
To: bug-gnu-emacs <at> gnu.org
Subject: 26.1; (not (string-empty-p nil)) returns true
Date: Wed, 30 Mar 2022 12:20:43 -0400
The expression (not (string-empty-p nil)) returns true. This is very
conuterintuitive: nil is as "empty" a value as there is! Some of the
more reasonable alternatives I can think of in order of preference are:

1. (string-empty-p nil) simply returns t
2. (string-empty-p nil) raises a type error
3. subr-x.el provides a separate string-null-or-empty-p function



In GNU Emacs 26.1 (build 2, x86_64-pc-linux-gnu, GTK+ Version 3.24.5)
 of 2019-09-22, modified by Debian built on x86-grnet-01
Windowing system distributor 'The X.Org Foundation', version 11.0.12004000
System Description:	Debian GNU/Linux 10 (buster)

Recent messages:
nil [2 times]
Quit
uncompressing subr-x.el.gz...done
Note: file is write protected
scroll-down-command: Beginning of buffer [11 times]
Mark saved where search started
killed: (string-empty-p sip-autosend-message)
Mark set [2 times]
Making completion list...

Configured using:
 'configure --build x86_64-linux-gnu --prefix=/usr
 --sharedstatedir=/var/lib --libexecdir=/usr/lib
 --localstatedir=/var/lib --infodir=/usr/share/info
 --mandir=/usr/share/man --enable-libsystemd --with-pop=yes
 --enable-locallisppath=/etc/emacs:/usr/local/share/emacs/26.1/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/26.1/site-lisp:/usr/share/emacs/site-lisp
 --with-sound=alsa --without-gconf --with-mailutils --build
 x86_64-linux-gnu --prefix=/usr --sharedstatedir=/var/lib
 --libexecdir=/usr/lib --localstatedir=/var/lib
 --infodir=/usr/share/info --mandir=/usr/share/man --enable-libsystemd
 --with-pop=yes
 --enable-locallisppath=/etc/emacs:/usr/local/share/emacs/26.1/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/26.1/site-lisp:/usr/share/emacs/site-lisp
 --with-sound=alsa --without-gconf --with-mailutils --with-x=yes
 --with-x-toolkit=gtk3 --with-toolkit-scroll-bars 'CFLAGS=-g -O2
 -fdebug-prefix-map=/build/emacs-StqULU/emacs-26.1+1=. -fstack-protector-strong
 -Wformat -Werror=format-security -Wall' 'CPPFLAGS=-Wdate-time
 -D_FORTIFY_SOURCE=2' LDFLAGS=-Wl,-z,relro'

Configured features:
XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GSETTINGS NOTIFY
ACL LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB
TOOLKIT_SCROLL_BARS GTK3 X11 THREADS LIBSYSTEMD LCMS2

Important settings:
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

Major mode: IELM

Minor modes in effect:
  shell-dirtrack-mode: t
  diff-auto-refine-mode: t
  text-scale-mode: t
  indent-on-save-mode: 0
  global-erjoalgo-command-mode: t
  erjoalgo-command-mode: t
  show-paren-mode: t
  global-text-scale-mode: t
  autobuild-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t

Load-path shadows:
/home/ealfonso/quicklisp/dists/quicklisp/software/slime-v2.24/slime-tests hides /home/ealfonso/.emacs.d/elpa/slime-20191224.2328/slime-tests
/home/ealfonso/quicklisp/dists/quicklisp/software/slime-v2.24/slime-autoloads hides /home/ealfonso/.emacs.d/elpa/slime-20191224.2328/slime-autoloads
/home/ealfonso/quicklisp/dists/quicklisp/software/slime-v2.24/slime hides /home/ealfonso/.emacs.d/elpa/slime-20191224.2328/slime
/home/ealfonso/.emacs.d/elpa/autobuild-20200209.2005/autobuild hides /home/ealfonso/git/dotemacs/lisp/core/autobuild
/home/ealfonso/.emacs.d/elpa/s-20180406.808/s hides /home/ealfonso/git/dotemacs/lisp/libs/s
/home/ealfonso/.emacs.d/elpa/dash-20191109.1327/dash hides /home/ealfonso/git/dotemacs/lisp/libs/dash
/home/ealfonso/quicklisp/dists/quicklisp/software/slime-v2.24/contrib/slime-cl-indent hides /home/ealfonso/git/dotemacs/lisp/libs/slime-cl-indent
/home/ealfonso/.emacs.d/elpa/babel-20181201.919/babel hides /home/ealfonso/git/babel/babel
/home/ealfonso/.emacs.d/elpa/let-alist-1.0.6/let-alist hides /usr/share/emacs/26.1/lisp/emacs-lisp/let-alist

Features:
(shadow emacsbug ielm eieio-opt speedbar sb-image ezimage dframe
help-fns radix-tree cl-print legalese finder skeleton mhtml-mode
css-mode color eww url-queue shr svg xml js imenu cc-mode cc-fonts
cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs
sgml-mode dom flyspell ispell animate sort python tramp-sh tramp
tramp-compat tramp-loaddefs trampver ucs-normalize shell mailalias
mail-extr rfc2368 browse-url qp gnus-ml disp-table nndraft nnmh nnfolder
utf-7 bbdb-gnus network-stream nsm starttls gnus-agent gnus-srvr
gnus-score score-mode nnvirtual gnus-msg gnus-art mm-uu mml2015 mm-view
mml-smime smime dig nntp gnus-cache sh-script smie executable misearch
multi-isearch dired-aux ffap vc-git diff-mode face-remap diary-lib
diary-loaddefs cal-iso org-rmail org-mhe org-irc org-info org-gnus nnir
gnus-sum gnus-group gnus-undo gnus-start gnus-cloud nnimap nnmail
mail-source tls gnutls utf7 netrc nnoo parse-time gnus-spec gnus-int
gnus-range gnus-win org-docview doc-view jka-compr image-mode org-bibtex
bibtex org-bbdb org-w3m org-agenda files-x tmp-completions tetris-o-1
beeper translation babel mm-url url url-proxy url-privacy url-expand
url-methods url-history mailcap gnus nnheader wid-edit wm-windows
slime-fancy slime-trace-dialog slime-fontifying-fu slime-package-fu
slime-references slime-compiler-notes-tree slime-scratch
slime-presentations bridge slime-macrostep macrostep slime-mdot-fu
slime-enclosing-context slime-fuzzy slime-fancy-trace
slime-fancy-inspector slime-c-p-c slime-editing-commands slime-autodoc
slime-repl elp slime-parse slime hi-lock company-oddmuse
company-keywords company-etags company-gtags company-dabbrev-code
company-dabbrev company-files company-capf company-cmake company-xcode
company-clang company-semantic company-eclim company-template
company-bbdb elec-pair lisp-mnt gud apropos compile etags xref project
arc-mode archive-mode cl ox-texinfo ox-odt rng-loc rng-uri rng-parse
rng-match rng-dt rng-util rng-pttrn nxml-parse nxml-ns nxml-enc xmltok
nxml-util ox-latex ox-icalendar ox-html table ox-ascii ox-publish ox
org-crypt org-element avl-tree generator org org-macro org-footnote
org-pcomplete pcomplete org-list org-faces org-entities noutline outline
org-version ob-emacs-lisp ob ob-tangle org-src ob-ref ob-lob ob-table
ob-keys ob-exp ob-comint comint ring ob-core ob-eval org-compat org-macs
org-loaddefs cal-menu calendar cal-loaddefs erc-goodies erc erc-backend
erc-compat thingatpt bbdb-mua bbdb-com crm bbdb-message sendmail message
rmc puny dired dired-loaddefs format-spec rfc822 mml mml-sec epa derived
epg gnus-util rmail rmail-loaddefs mm-decode mm-bodies mm-encode
mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums mail-prsvr
mailabbrev mail-utils gmm-utils mailheader bbdb bbdb-site timezone
websocket url-cookie url-domsuf url-util bindat selcand proxy-mode
project-opener org-omnibar erjoalgo-command-mode command-mode-commands
anonymizer genpass ert pp ewoc debug flycheck cl-extra ansi-color json
map find-func help-mode rx subr-x header2 sticky-windows company edmacro
kmacro pcase dedicated dash-functional plusx my-emacs-settings paren
server isearch-fast-reverse buttons zoom-global easy-mmode quick-yes
advice goto-last-change autobuild-common-rules autobuild f dash s
finder-inf slime-autoloads info package easymenu epg-config url-handlers
url-parse auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs
password-cache url-vars seq byte-opt gv bytecomp byte-compile cconv
cl-loaddefs cl-lib time-date mule-util tooltip eldoc electric uniquify
ediff-hook vc-hooks lisp-float-type mwheel term/x-win x-win
term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe
tabulated-list replace newcomment text-mode elisp-mode lisp-mode
prog-mode register page menu-bar rfn-eshadow isearch timer select
scroll-bar mouse jit-lock font-lock syntax facemenu font-core
term/tty-colors frame cl-generic 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 charscript charprop case-table epa-hook jka-cmpr-hook
help simple abbrev obarray minibuffer cl-preloaded nadvice loaddefs
button faces cus-face macroexp files text-properties overlay sha1 md5
base64 format env code-pages mule custom widget hashtable-print-readable
backquote dbusbind inotify lcms2 dynamic-setting system-font-setting
font-render-setting move-toolbar gtk x-toolkit x multi-tty
make-network-process emacs)

Memory information:
((conses 16 1037404 79976)
 (symbols 48 63949 2)
 (miscs 40 856 1109)
 (strings 32 168803 4766)
 (string-bytes 1 5624278)
 (vectors 16 92002)
 (vector-slots 8 2066993 159212)
 (floats 8 615 891)
 (intervals 56 17949 134)
 (buffers 992 61))




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#54639; Package emacs. (Thu, 31 Mar 2022 11:28:01 GMT) Full text and rfc822 format available.

Message #8 received at 54639 <at> debbugs.gnu.org (full text, mbox):

From: Lars Ingebrigtsen <larsi <at> gnus.org>
To: Ernesto Alfonso <erjoalgo <at> gmail.com>
Cc: 54639 <at> debbugs.gnu.org
Subject: Re: bug#54639: 26.1; (not (string-empty-p nil)) returns true
Date: Thu, 31 Mar 2022 13:26:56 +0200
Ernesto Alfonso <erjoalgo <at> gmail.com> writes:

> The expression (not (string-empty-p nil)) returns true. This is very
> conuterintuitive: nil is as "empty" a value as there is!

But nil isn't a string, and the function is only (meant to be) valid for
strings.  It "works" for symbols by accident.

> Some of the more reasonable alternatives I can think of in order of
> preference are:
>
> 1. (string-empty-p nil) simply returns t
> 2. (string-empty-p nil) raises a type error

We can't change how an established function works -- that would break
people's code.

> 3. subr-x.el provides a separate string-null-or-empty-p function

That would be just (zerop (length OBJECT)), which doesn't quite seem
worth having a function when the function name is longer than the
expression it replaces.  (And it would be misleading to have the
function name start with string- since it works on other things, too.)

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no




Added tag(s) wontfix. Request was from Lars Ingebrigtsen <larsi <at> gnus.org> to control <at> debbugs.gnu.org. (Thu, 31 Mar 2022 11:28:01 GMT) Full text and rfc822 format available.

bug closed, send any further explanations to 54639 <at> debbugs.gnu.org and Ernesto Alfonso <erjoalgo <at> gmail.com> Request was from Lars Ingebrigtsen <larsi <at> gnus.org> to control <at> debbugs.gnu.org. (Thu, 31 Mar 2022 11:28:02 GMT) Full text and rfc822 format available.

bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Fri, 29 Apr 2022 11:24:06 GMT) Full text and rfc822 format available.

This bug report was last modified 3 years and 50 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.