From: Eli Zaretskii Date: Sat, 28 Dec 2013 11:47:26 +0000 (+0200) Subject: Fix bug #14739 with creation of GUI frames from TTY session on Windows. X-Git-Tag: emacs-24.3.90~173^2^2~42^2~45^2~387^2~142 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=bf7bea5de09945949ab969f663aaf00fed1f67b4;p=emacs.git Fix bug #14739 with creation of GUI frames from TTY session on Windows. src/w32fns.c (Fx_create_frame): Error out if called from a TTY session. lisp/frame.el (window-system-for-display): Don't allow to create a GUI frame from a -nw session on MS-Windows. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 9996dae5932..3c9356fbd7c 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2013-12-28 Eli Zaretskii + + * frame.el (window-system-for-display): Don't allow to create a + GUI frame from a -nw session on MS-Windows. (Bug#14739) + 2013-12-28 Glenn Morris * mail/hashcash.el (hashcash-program): Rename from hashcash-path. diff --git a/lisp/frame.el b/lisp/frame.el index 6105c88d7be..cb08fcb753f 100644 --- a/lisp/frame.el +++ b/lisp/frame.el @@ -540,10 +540,14 @@ is not considered (see `next-frame')." (defun window-system-for-display (display) "Return the window system for DISPLAY. Return nil if we don't know how to interpret DISPLAY." - (cl-loop for descriptor in display-format-alist - for pattern = (car descriptor) - for system = (cdr descriptor) - when (string-match-p pattern display) return system)) + ;; MS-Windows doesn't know how to create a GUI frame in a -nw session. + (if (and (eq system-type 'windows-nt) + (null (window-system))) + nil + (cl-loop for descriptor in display-format-alist + for pattern = (car descriptor) + for system = (cdr descriptor) + when (string-match-p pattern display) return system))) (defun make-frame-on-display (display &optional parameters) "Make a frame on display DISPLAY. diff --git a/src/ChangeLog b/src/ChangeLog index 6bdadaf796f..2749399d392 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2013-12-28 Eli Zaretskii + + * w32fns.c (Fx_create_frame): Error out if called from a TTY + session. (Bug#14739) + 2013-12-27 Jarek Czekalski * callproc.c (Vexec_path): Document that exec-directory is in it. diff --git a/src/w32fns.c b/src/w32fns.c index 9536b146535..5ecddbc11d3 100644 --- a/src/w32fns.c +++ b/src/w32fns.c @@ -4346,6 +4346,9 @@ This function is an internal primitive--use `make-frame' instead. */) Lisp_Object parent; struct kboard *kb; + if (!FRAME_W32_P (SELECTED_FRAME ())) + error ("Cannot create a GUI frame in a -nw session"); + /* Make copy of frame parameters because the original is in pure storage now. */ parameters = Fcopy_alist (parameters);