aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKarl Heuer1995-04-19 21:04:01 +0000
committerKarl Heuer1995-04-19 21:04:01 +0000
commitcca176a050c1a7a4ce91206f64b4f8bb0febfe58 (patch)
tree8be92503fd5e55d46051b87c310e8c65e980ea3c /src
parent60a8823e0bb5d17c322f13dae2702aab2c80e8c8 (diff)
downloademacs-cca176a050c1a7a4ce91206f64b4f8bb0febfe58.tar.gz
emacs-cca176a050c1a7a4ce91206f64b4f8bb0febfe58.zip
(x_window): Use (or reuse) frame's namebuf instead of a
temp var. This avoids a storage leak.
Diffstat (limited to 'src')
-rw-r--r--src/xfns.c20
1 files changed, 7 insertions, 13 deletions
diff --git a/src/xfns.c b/src/xfns.c
index 19fc63ed7d4..28208a874f8 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -2325,27 +2325,21 @@ x_window (f, window_prompting, minibuffer_only)
2325 Widget shell_widget; 2325 Widget shell_widget;
2326 Widget pane_widget; 2326 Widget pane_widget;
2327 Widget frame_widget; 2327 Widget frame_widget;
2328 char* name;
2329 Arg al [25]; 2328 Arg al [25];
2330 int ac; 2329 int ac;
2331 2330
2332 BLOCK_INPUT; 2331 BLOCK_INPUT;
2333 2332
2334 if (STRINGP (f->name)) 2333 {
2335 { 2334 char *str = (STRINGP (f->name) ? XSTRING (f->name)->data : "emacs");
2336 /* This is a storage leak, but unless people create 2335 f->namebuf = (char *) xrealloc (f->namebuf, strlen (str) + 1);
2337 thousands of frames, that's ok. 2336 strcpy (f->namebuf, str);
2338 Fix it later by making a new slot in the frame to hold this. */ 2337 }
2339 name = (char *) xmalloc (XSTRING (f->name)->size + 1);
2340 bcopy (XSTRING (f->name)->data, name, XSTRING (f->name)->size + 1);
2341 }
2342 else
2343 name = "emacs";
2344 2338
2345 ac = 0; 2339 ac = 0;
2346 XtSetArg (al[ac], XtNallowShellResize, 1); ac++; 2340 XtSetArg (al[ac], XtNallowShellResize, 1); ac++;
2347 XtSetArg (al[ac], XtNinput, 1); ac++; 2341 XtSetArg (al[ac], XtNinput, 1); ac++;
2348 shell_widget = XtAppCreateShell (name, EMACS_CLASS, 2342 shell_widget = XtAppCreateShell (f->namebuf, EMACS_CLASS,
2349 topLevelShellWidgetClass, 2343 topLevelShellWidgetClass,
2350 FRAME_X_DISPLAY (f), al, ac); 2344 FRAME_X_DISPLAY (f), al, ac);
2351 2345
@@ -2373,7 +2367,7 @@ x_window (f, window_prompting, minibuffer_only)
2373 XtSetArg (al[ac], XtNallowResize, 1); ac++; 2367 XtSetArg (al[ac], XtNallowResize, 1); ac++;
2374 XtSetArg (al[ac], XtNresizeToPreferred, 1); ac++; 2368 XtSetArg (al[ac], XtNresizeToPreferred, 1); ac++;
2375 XtSetArg (al[ac], XtNemacsFrame, f); ac++; 2369 XtSetArg (al[ac], XtNemacsFrame, f); ac++;
2376 frame_widget = XtCreateWidget (name, 2370 frame_widget = XtCreateWidget (f->namebuf,
2377 emacsFrameClass, 2371 emacsFrameClass,
2378 pane_widget, al, ac); 2372 pane_widget, al, ac);
2379 lw_set_main_areas (pane_widget, f->display.x->menubar_widget, frame_widget); 2373 lw_set_main_areas (pane_widget, f->display.x->menubar_widget, frame_widget);