summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRichard M. Stallman <rms@gnu.org>1996-06-29 06:45:08 +0000
committerRichard M. Stallman <rms@gnu.org>1996-06-29 06:45:08 +0000
commitecaca5875ac0124921267ee81894f82fc40afec0 (patch)
tree7daa7ce2095afa5a812b1f2fc4dd8969031399a4 /src
parent8798879498aed59df771c7b45bff94a69f7c73e6 (diff)
downloademacs-ecaca5875ac0124921267ee81894f82fc40afec0.tar.gz
(Fx_create_frame): Gcpro parms, parent, and name.
Diffstat (limited to 'src')
-rw-r--r--src/xfns.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/xfns.c b/src/xfns.c
index 8896fc46373..849dc8d1aa4 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -3011,7 +3011,7 @@ This function is an internal primitive--use `make-frame' instead.")
long window_prompting = 0;
int width, height;
int count = specpdl_ptr - specpdl;
- struct gcpro gcpro1;
+ struct gcpro gcpro1, gcpro2, gcpro3, gcpro4;
Lisp_Object display;
struct x_display_info *dpyinfo;
Lisp_Object parent;
@@ -3049,6 +3049,11 @@ This function is an internal primitive--use `make-frame' instead.")
if (! NILP (parent))
CHECK_NUMBER (parent, 0);
+ /* make_frame_without_minibuffer can run Lisp code and garbage collect. */
+ /* No need to protect DISPLAY because that's not used after passing
+ it to make_frame_without_minibuffer. */
+ frame = Qnil;
+ GCPRO4 (parms, parent, name, frame);
tem = x_get_arg (parms, Qminibuffer, 0, 0, symbol);
if (EQ (tem, Qnone) || NILP (tem))
f = make_frame_without_minibuffer (Qnil, kb, display);
@@ -3062,12 +3067,11 @@ This function is an internal primitive--use `make-frame' instead.")
else
f = make_frame (1);
+ XSETFRAME (frame, f);
+
/* Note that X Windows does support scroll bars. */
FRAME_CAN_HAVE_SCROLL_BARS (f) = 1;
- XSETFRAME (frame, f);
- GCPRO1 (frame);
-
f->output_method = output_x_window;
f->output_data.x = (struct x_output *) xmalloc (sizeof (struct x_output));
bzero (f->output_data.x, sizeof (struct x_output));