diff options
| author | Dima Kogan | 2015-10-20 18:12:55 +0300 |
|---|---|---|
| committer | Eli Zaretskii | 2015-10-20 18:12:55 +0300 |
| commit | 28c58bf739fb5cc528051cfc48770fbfa4e1a319 (patch) | |
| tree | 12f31f472fd0e9460c228bc3594554a206c80c97 | |
| parent | 90e9cf85be9b36cc11ae52af765b8f4236be8833 (diff) | |
| download | emacs-28c58bf739fb5cc528051cfc48770fbfa4e1a319.tar.gz emacs-28c58bf739fb5cc528051cfc48770fbfa4e1a319.zip | |
Fix memory leak in fontset handling
* src/font.c (copy_font_spec): Make a deep copy of the input
argument FONT. (Bug#21651)
| -rw-r--r-- | src/font.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/font.c b/src/font.c index a52a653d29b..be55ce9bc7b 100644 --- a/src/font.c +++ b/src/font.c | |||
| @@ -3981,7 +3981,10 @@ copy_font_spec (Lisp_Object font) | |||
| 3981 | pcdr = spec->props + FONT_EXTRA_INDEX; | 3981 | pcdr = spec->props + FONT_EXTRA_INDEX; |
| 3982 | for (tail = AREF (font, FONT_EXTRA_INDEX); CONSP (tail); tail = XCDR (tail)) | 3982 | for (tail = AREF (font, FONT_EXTRA_INDEX); CONSP (tail); tail = XCDR (tail)) |
| 3983 | if (!EQ (XCAR (XCAR (tail)), QCfont_entity)) | 3983 | if (!EQ (XCAR (XCAR (tail)), QCfont_entity)) |
| 3984 | *pcdr = Fcons (XCAR (tail), Qnil), pcdr = xcdr_addr (*pcdr); | 3984 | { |
| 3985 | *pcdr = Fcons (Fcons (XCAR (XCAR (tail)), CDR (XCAR (tail))), Qnil); | ||
| 3986 | pcdr = xcdr_addr (*pcdr); | ||
| 3987 | } | ||
| 3985 | 3988 | ||
| 3986 | XSETFONT (new_spec, spec); | 3989 | XSETFONT (new_spec, spec); |
| 3987 | return new_spec; | 3990 | return new_spec; |