summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndy Moreton <andrewjmoreton@gmail.com>2017-09-30 16:21:39 +0300
committerEli Zaretskii <eliz@gnu.org>2017-09-30 16:21:39 +0300
commit4a755ed42158b6a165bfd689e2d974d0ccda7530 (patch)
treea3c786c4ceb5d1be28e9856c93cbecce6d711725
parentcb93a6ce72c5d238c6f120192aaba1554363dfe9 (diff)
downloademacs-4a755ed421.tar.gz
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.
-rw-r--r--lisp/vc/vc-hg.el12
1 files 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