Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
emacs
emacs
Commits
4d19cb8e
Commit
4d19cb8e
authored
Oct 27, 1994
by
Karl Heuer
Browse files
(set_frame_menubar): Don't copy string during GC risk.
parent
7bfcceab
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
18 additions
and
5 deletions
+18
-5
src/xmenu.c
src/xmenu.c
+18
-5
No files found.
src/xmenu.c
View file @
4d19cb8e
...
...
@@ -1377,7 +1377,7 @@ set_frame_menubar (f, first_time)
Widget
menubar_widget
=
f
->
display
.
x
->
menubar_widget
;
int
id
=
(
int
)
f
;
Lisp_Object
tail
,
items
;
widget_value
*
wv
,
*
save_wv
,
*
first_wv
,
*
prev_wv
=
0
;
widget_value
*
wv
,
*
first_wv
,
*
prev_wv
=
0
;
int
i
;
BLOCK_INPUT
;
...
...
@@ -1386,7 +1386,7 @@ set_frame_menubar (f, first_time)
wv
->
name
=
"menubar"
;
wv
->
value
=
0
;
wv
->
enabled
=
1
;
save_wv
=
first_wv
=
wv
;
first_wv
=
wv
;
items
=
FRAME_MENU_BAR_ITEMS
(
f
);
menu_items
=
f
->
menu_bar_vector
;
menu_items_allocated
=
XVECTOR
(
menu_items
)
->
size
;
...
...
@@ -1405,13 +1405,26 @@ set_frame_menubar (f, first_time)
wv
=
single_submenu
(
key
,
string
,
maps
);
if
(
prev_wv
)
prev_wv
->
next
=
wv
;
else
save
_wv
->
contents
=
wv
;
wv
->
name
=
(
char
*
)
XSTRING
(
string
)
->
data
;
else
first
_wv
->
contents
=
wv
;
/* Don't set wv->name here; GC during the loop might relocate it. */
wv
->
enabled
=
1
;
prev_wv
=
wv
;
}
/* Now GC cannot happen during the lifetime of the widget_value,
so it's safe to store data from a Lisp_String. */
wv
=
first_wv
->
contents
;
for
(
i
=
0
;
i
<
XVECTOR
(
items
)
->
size
;
i
+=
3
)
{
Lisp_Object
string
;
string
=
XVECTOR
(
items
)
->
contents
[
i
+
1
];
if
(
NILP
(
string
))
break
;
wv
->
name
=
(
char
*
)
XSTRING
(
string
)
->
data
;
wv
=
wv
->
next
;
}
finish_menu_items
();
f
->
menu_bar_vector
=
menu_items
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment