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

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

bug#15648: 24.2.50; gnutls SSL connection to IMAP server causes emacs to


From: emacs
Subject: bug#15648: 24.2.50; gnutls SSL connection to IMAP server causes emacs to crash completely
Date: Tue, 29 Oct 2013 01:13:56 -0400

Stefan Monnier wrote at about 21:52:24 -0400 on Friday, October 25, 2013:
 > > Basically, this version does 2 things:
 > > 1. Pre-expands the file name *if* there is a Magic File handler for that
 > >    file path (this will do nothing if there is no handler for that path)
 > > 2. Tests file-exists-p with all Magic File handlers shut off which
 > >    tests to make sure that the OS primitives will work on the actual
 > >    file path that will be passed
 > 
 > It's a cleaner workaround, but I'd rather we come up with an actual fix.
 > Do you think you can try to make a patch that adds (in files.el) a new
 > function meant to turn an Elisp file name into an OS file name or return
 > nil if the file can't be accessed by OS primitives?  This function would
 > just delegate its work to the file-name-handler if any, and otherwise
 > just return its argument unchanged.
 > 
 > 
 >         Stefan

There was a small logic error in my original proposed patch...
Here is a corrected version:

--- gnutls.el      2013-03-17 13:52:40.000000000 -0400
+++ gnutls.el.new  2013-10-29 01:10:49.784647900 -0400
@@ -174,7 +174,13 @@
   (let* ((type (or type 'gnutls-x509pki))
          (trustfiles (or trustfiles
                          (delq nil
-                               (mapcar (lambda (f) (and f (file-exists-p f) f))
+                               (mapcar (lambda (f)
+                                        (when f
+                                          (if (find-file-name-handler
+                                               f 'expand-file-name)
+                                              (setq f (expand-file-name f)))
+                                          (let (file-name-handler-alist)
+                                            (if (file-exists-p f) f))))
                                        (if (functionp gnutls-trustfiles)
                                            (funcall gnutls-trustfiles)
                                          gnutls-trustfiles)))))





reply via email to

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