changeset 76633:32db7e65b617

(ispell-call-process): New function. Defends against bad `default-directory.' (ispell-check-version, ispell-find-aspell-dictionaries) (ispell-get-aspell-config-value, lookup-words): Call it. (ispell-call-process-region): New function. (ispell-send-string): Call it.
author Richard M. Stallman <rms@gnu.org>
date Tue, 20 Mar 2007 16:23:09 +0000
parents 4bf7602b016c
children 98c3595cace4
files lisp/textmodes/ispell.el
diffstat 1 files changed, 22 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/textmodes/ispell.el	Tue Mar 20 09:47:48 2007 +0000
+++ b/lisp/textmodes/ispell.el	Tue Mar 20 16:23:09 2007 +0000
@@ -766,9 +766,7 @@
 	(if buf (kill-buffer buf)))
       (set-buffer (get-buffer-create " *ispell-tmp*"))
       (erase-buffer)
-      (unless (file-exists-p default-directory)
-	(setq default-directory (expand-file-name "~/")))
-      (setq status (call-process
+      (setq status (ispell-call-process
 		    ispell-program-name nil t nil
 		    ;; aspell doesn't accept the -vv switch.
 		    (let ((case-fold-search
@@ -827,6 +825,22 @@
       (kill-buffer (current-buffer)))
     result))
 
+(defun ispell-call-process (&rest args)
+  "Like `call-process' but defend against bad `default-directory'."
+  (let ((default-directory default-directory))
+    (unless (and (file-directory-p default-directory)
+		 (file-readable-p default-directory))
+      (setq default-directory (expand-file-name "~/")))
+    (apply 'call-process args)))
+
+(defun ispell-call-process-region (&rest args)
+  "Like `call-process-region' but defend against bad `default-directory'."
+  (let ((default-directory default-directory))
+    (unless (and (file-directory-p default-directory)
+		 (file-readable-p default-directory))
+      (setq default-directory (expand-file-name "~/")))
+    (apply 'call-process-region args)))
+
 
 
 ;;; The preparation of the menu bar menu must be autoloaded
@@ -895,7 +909,7 @@
   (let* ((dictionaries
 	  (split-string
 	   (with-temp-buffer
-	     (call-process ispell-program-name nil t nil "dicts")
+	     (ispell-call-process ispell-program-name nil t nil "dicts")
 	     (buffer-string))))
 	 ;; Search for the named dictionaries.
 	 (found
@@ -928,7 +942,7 @@
   "Return value of Aspell configuration option KEY.
 Assumes that value contains no whitespace."
   (with-temp-buffer
-    (call-process ispell-program-name nil t nil "config" key)
+    (ispell-call-process ispell-program-name nil t nil "config" key)
     (car (split-string (buffer-string)))))
 
 (defun ispell-aspell-find-dictionary (dict-name)
@@ -1500,7 +1514,8 @@
 	      (erase-buffer)
 	      (set-buffer session-buf)
 	      (setq status
-		    (apply 'call-process-region (point-min) (point-max)
+		    (apply 'ispell-call-process-region
+			   (point-min) (point-max)
 			   ispell-program-name nil
 			   output-buf nil
 			   "-a" "-m" ispell-args))
@@ -2197,7 +2212,7 @@
 	    (while (search-backward "*" nil t) (insert "."))
 	    (setq word (buffer-string))
 	    (erase-buffer))
-	  (setq status (apply 'call-process prog nil t nil
+	  (setq status (apply 'ispell-call-process prog nil t nil
 			      (nconc (if (and args (> (length args) 0))
 					 (list args)
 				       (if look-p nil