diff options
author | Paul Eggert <eggert@penguin.cs.ucla.edu> | 2014-02-28 13:45:34 -0800 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2014-02-28 13:45:34 -0800 |
commit | 8268febfe0c336ff47a61d0d416fd4bebf61a993 (patch) | |
tree | 4a1590e6aff922e69646cc35347192ea507b1c7a /src/term.c | |
parent | b70257b07ea6053bce27b20ad0bda50f547bd393 (diff) | |
download | emacs-8268febfe0c336ff47a61d0d416fd4bebf61a993.tar.gz emacs-8268febfe0c336ff47a61d0d416fd4bebf61a993.tar.bz2 emacs-8268febfe0c336ff47a61d0d416fd4bebf61a993.zip |
Fix a few crashes and leaks when cloning C strings.
* alloc.c, lisp.h (dupstring): New function.
* gtkutil.c (xg_get_font):
* term.c (tty_default_color_capabilities):
* xsettings.c (store_monospaced_changed)
(store_font_name_changed, parse_settings)
(read_and_apply_settings, init_gsettings, init_gconf): Use it.
This avoids some unlikely crashes due to accessing freed storage,
and avoids some minor memory leaks in the more-typical case.
Diffstat (limited to 'src/term.c')
-rw-r--r-- | src/term.c | 14 |
1 files changed, 3 insertions, 11 deletions
diff --git a/src/term.c b/src/term.c index 0c40c2d16b9..61a8d39d971 100644 --- a/src/term.c +++ b/src/term.c @@ -2052,17 +2052,9 @@ tty_default_color_capabilities (struct tty_display_info *tty, bool save) if (save) { - xfree (default_orig_pair); - default_orig_pair = tty->TS_orig_pair ? xstrdup (tty->TS_orig_pair) : NULL; - - xfree (default_set_foreground); - default_set_foreground = tty->TS_set_foreground ? xstrdup (tty->TS_set_foreground) - : NULL; - - xfree (default_set_background); - default_set_background = tty->TS_set_background ? xstrdup (tty->TS_set_background) - : NULL; - + dupstring (&default_orig_pair, tty->TS_orig_pair); + dupstring (&default_set_foreground, tty->TS_set_foreground); + dupstring (&default_set_background, tty->TS_set_background); default_max_colors = tty->TN_max_colors; default_max_pairs = tty->TN_max_pairs; default_no_color_video = tty->TN_no_color_video; |