Subject: bug#76664: closed (Re: bug#76664: 31.0.50; behavior of widget-put implemented in Lisp changed compared to C)

From: [email-masked] (GNU bug Tracking System)
Date: Sun, 02 Mar 2025 01:22:02 +0000

Your bug report

#76664: 31.0.50; behavior of widget-put implemented in Lisp changed compared to C

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
76664: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=76664
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#76664: 31.0.50; behavior of widget-put implemented in Lisp changed compared to C
From: Stefan Kangas <[email-masked]>
To: David Ponce <[email-masked]>, [email-masked]
Date: Sat, 1 Mar 2025 17:21:03 -0800
List-Id: <debbugs-submit.debbugs.gnu.org>

Version: 30.1

David Ponce via "Bug reports for GNU Emacs, the Swiss army knife of text
editors" <[email-masked]> writes:

> Since this commit:
>
>        author	Stefan Kangas <[email-masked]>	
>        Fri, 28 Feb 2025 18:28:58 +0100 (18:28 +0100)
>        commit	8b659313b83c82cfe09af1638289fccdfc9af23d
>
>        Lift widget functions from C to Lisp
>
> I encounter errors in widgets because the behavior of the Lisp
> implementation of `widget-put' changed compared to the C version.
>
> Specifically the C version used to return the passed value, which
> is no more the case of the Lisp version.
>
> This trivial patch fixed the issue for me:

Thanks, I pushed the below change to master in your name.  I also
separately added a unit test for this.

I'm therefore closing this bug report.

> diff --git a/lisp/wid-edit.el b/lisp/wid-edit.el
> index d6fd1156123..ff6550e852f 100644
> --- a/lisp/wid-edit.el
> +++ b/lisp/wid-edit.el
> @@ -625,7 +625,8 @@ widgetp
>   (defun widget-put (widget property value)
>     "In WIDGET, set PROPERTY to VALUE.
>   The value can later be retrieved with `widget-get'."
> -  (setcdr widget (plist-put (cdr widget) property value)))
> +  (setcdr widget (plist-put (cdr widget) property value))
> +  value)
>
>   ;;;###autoload
>   (defun widget-get (widget property)

Subject: 31.0.50; behavior of widget-put implemented in Lisp changed compared to C
From: David Ponce <[email-masked]>
To: [email-masked]
Date: Sat, 1 Mar 2025 18:18:35 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

Hello,

Since this commit:

       author	Stefan Kangas <[email-masked]>	
       Fri, 28 Feb 2025 18:28:58 +0100 (18:28 +0100)
       commit	8b659313b83c82cfe09af1638289fccdfc9af23d

       Lift widget functions from C to Lisp

I encounter errors in widgets because the behavior of the Lisp
implementation of `widget-put' changed compared to the C version.

Specifically the C version used to return the passed value, which
is no more the case of the Lisp version.

This trivial patch fixed the issue for me:

diff --git a/lisp/wid-edit.el b/lisp/wid-edit.el
index d6fd1156123..ff6550e852f 100644
--- a/lisp/wid-edit.el
+++ b/lisp/wid-edit.el
@@ -625,7 +625,8 @@ widgetp
  (defun widget-put (widget property value)
    "In WIDGET, set PROPERTY to VALUE.
  The value can later be retrieved with `widget-get'."
-  (setcdr widget (plist-put (cdr widget) property value)))
+  (setcdr widget (plist-put (cdr widget) property value))
+  value)
  
  ;;;###autoload
  (defun widget-get (widget property)

Thanks

In GNU Emacs 31.0.50 (build 9, x86_64-pc-linux-gnu, GTK+ Version
  3.24.43, cairo version 1.18.0) of 2025-03-01
Repository revision: 6a2f6056c5a079a7f3db240171680560a3bd9710
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12014000
System Description: Fedora Linux 40 (KDE Plasma)

Configured using:
  'configure --prefix=/home/dponce --with-native-compilation=no
  PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig'

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG
LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES 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 $LC_TIME: fr_FR.utf8
   value of $LANG: fr_FR.UTF-8
   locale-coding-system: utf-8-unix