diff options
| author | Filipp Gunbin | 2016-10-26 14:31:12 -0400 |
|---|---|---|
| committer | Stefan Monnier | 2016-10-26 14:31:12 -0400 |
| commit | 4e45b55a9566189af6e40449954504ea7c47fa90 (patch) | |
| tree | 79a6e472f68ec320cc0128eb15ec42e78eb58cbb /lisp/shell.el | |
| parent | 5edf76ba15fb012e9cb3112ee4a2c9ef4b02f20e (diff) | |
| download | emacs-4e45b55a9566189af6e40449954504ea7c47fa90.tar.gz emacs-4e45b55a9566189af6e40449954504ea7c47fa90.zip | |
* lisp/shell.el (shell--unquote&requote-argument): Match data misuse
* lisp/shell.el (shell--unquote&requote-argument): Fix
off-by-one thinko. Don't use match data after a failed string-match.
Diffstat (limited to 'lisp/shell.el')
| -rw-r--r-- | lisp/shell.el | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/lisp/shell.el b/lisp/shell.el index 1f019f20f3a..34bd77282ab 100644 --- a/lisp/shell.el +++ b/lisp/shell.el | |||
| @@ -384,11 +384,15 @@ Thus, this does not include the shell's current directory.") | |||
| 384 | ((eq (aref qstr match) ?\") (setq dquotes (not dquotes))) | 384 | ((eq (aref qstr match) ?\") (setq dquotes (not dquotes))) |
| 385 | ((eq (aref qstr match) ?\') | 385 | ((eq (aref qstr match) ?\') |
| 386 | (cond | 386 | (cond |
| 387 | ;; Treat single quote as text if inside double quotes. | ||
| 387 | (dquotes (funcall push "'" (match-end 0))) | 388 | (dquotes (funcall push "'" (match-end 0))) |
| 388 | ((< match (1+ (length qstr))) | 389 | ((< (1+ match) (length qstr)) |
| 389 | (let ((end (string-match "'" qstr (1+ match)))) | 390 | (let ((end (string-match "'" qstr (1+ match)))) |
| 390 | (funcall push (substring qstr (1+ match) end) | 391 | (unless end |
| 391 | (or end (length qstr))))) | 392 | (setq end (length qstr)) |
| 393 | (set-match-data (list match (length qstr)))) | ||
| 394 | (funcall push (substring qstr (1+ match) end) end))) | ||
| 395 | ;; Ignore if at the end of string. | ||
| 392 | (t nil))) | 396 | (t nil))) |
| 393 | (t (error "Unexpected case in shell--unquote&requote-argument!"))) | 397 | (t (error "Unexpected case in shell--unquote&requote-argument!"))) |
| 394 | (setq qpos (match-end 0))) | 398 | (setq qpos (match-end 0))) |