From 4a755ed42158b6a165bfd689e2d974d0ccda7530 Mon Sep 17 00:00:00 2001 From: Andy Moreton Date: Sat, 30 Sep 2017 16:21:39 +0300 Subject: [PATCH] Avoid assertions in vc-hg.el on MS-Windows * lisp/vc/vc-hg.el (vc-hg--pcre-to-elisp-re) (vc-hg--slurp-hgignore, vc-hg--read-repo-requirements) (vc-hg-state-fast): Use file-name-absolute-p and directory-name-p instead of relying on Unix file-name syntax. This avoids assertion violations on MS-Windows. --- lisp/vc/vc-hg.el | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/lisp/vc/vc-hg.el b/lisp/vc/vc-hg.el index 7a04a543773..99c8869ae06 100644 --- a/lisp/vc/vc-hg.el +++ b/lisp/vc/vc-hg.el @@ -687,7 +687,8 @@ PREFIX is the directory name of the directory against which these patterns are rooted. We understand only a subset of PCRE syntax; if we don't understand a construct, we signal `vc-hg-unsupported-syntax'." - (cl-assert (string-match "^/\\(.*/\\)?$" prefix)) + (cl-assert (and (file-name-absolute-p prefix) + (directory-name-p prefix))) (let ((parts nil) (i 0) (anchored nil) @@ -875,7 +876,8 @@ if we don't understand a construct, we signal (defun vc-hg--slurp-hgignore (repo) "Read hg ignore patterns from REPO. REPO must be the directory name of an hg repository." - (cl-assert (string-match "^/\\(.*/\\)?$" repo)) + (cl-assert (and (file-name-absolute-p repo) + (directory-name-p repo))) (let* ((hgignore (concat repo ".hgignore")) (vc-hg--hgignore-patterns nil) (vc-hg--hgignore-filenames nil)) @@ -930,7 +932,8 @@ FILENAME must be the file's true absolute name." (concat repo repo-relative-filename)))) (defun vc-hg--read-repo-requirements (repo) - (cl-assert (string-match "^/\\(.*/\\)?$" repo)) + (cl-assert (and (file-name-absolute-p repo) + (directory-name-p repo))) (let* ((requires-filename (concat repo ".hg/requires"))) (and (file-exists-p requires-filename) (with-temp-buffer @@ -1001,7 +1004,8 @@ hg binary." ;; dirstate must exist (not (progn (setf repo (expand-file-name repo)) - (cl-assert (string-match "^/\\(.*/\\)?$" repo)) + (cl-assert (and (file-name-absolute-p repo) + (directory-name-p repo))) (setf dirstate (concat repo ".hg/dirstate")) (setf dirstate-attr (file-attributes dirstate)))) ;; Repository must be in an understood format -- 2.39.2