bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#32201: 27.0.50; setenv should not change match-data


From: John Shahid
Subject: bug#32201: 27.0.50; setenv should not change match-data
Date: Thu, 19 Jul 2018 00:22:49 +0000
User-agent: mu4e 1.1.0; emacs 27.0.50

Noam Postavsky <address@hidden> writes:

[...]

> Anyway, I don't think setenv should be changed, rather
> abbreviate-file-name should save-match-data around the expand-file-name
> call.  After all, today you happened to use setenv in a hook, tomorrow
> someone will use another match-data modifying function.

I agree, but I also think that there is no reason for `setenv' to use
`string-match' instead of `string-match-p'.  It doesn't seem to be using
the match data anyway.  I attached the patch that replaces
`string-match' with `string-match-p' in `setenv' and `setenv-internal'.
WDYT ?

>From 7b592252f698ae07a2010302c74b42026fbbca5e Mon Sep 17 00:00:00 2001
From: John Shahid <address@hidden>
Date: Wed, 18 Jul 2018 20:18:19 -0400
Subject: [PATCH] Avoid destroying match data in 'setenv'

* lisp/env.el (setenv,setenv-internal): Replace string-match with
  string-match-p
---
 lisp/env.el | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/lisp/env.el b/lisp/env.el
index e47eb57836..7007ba33e5 100644
--- a/lisp/env.el
+++ b/lisp/env.el
@@ -113,11 +113,11 @@ setenv-internal
             (not keep-empty)
             env
             (stringp (car env))
-            (string-match pattern (car env)))
+             (string-match-p pattern (car env)))
        (cdr env)
       ;; Try to find existing entry for VARIABLE in ENV.
       (while (and scan (stringp (car scan)))
-       (when (string-match pattern (car scan))
+        (when (string-match-p pattern (car scan))
          (if value
              (setcar scan (concat variable "=" value))
            (if keep-empty
@@ -184,7 +184,7 @@ setenv
       (setq variable (encode-coding-string variable locale-coding-system)))
   (if (and value (multibyte-string-p value))
       (setq value (encode-coding-string value locale-coding-system)))
-  (if (string-match "=" variable)
+  (if (string-match-p "=" variable)
       (error "Environment variable name `%s' contains `='" variable))
   (if (string-equal "TZ" variable)
       (set-time-zone-rule value))
-- 
2.18.0


reply via email to

[Prev in Thread] Current Thread [Next in Thread]