diff options
Diffstat (limited to 'src/alloc.c')
| -rw-r--r-- | src/alloc.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/alloc.c b/src/alloc.c index 2c28b5df6d7..a65dbb48b93 100644 --- a/src/alloc.c +++ b/src/alloc.c | |||
| @@ -5951,8 +5951,21 @@ mark_object (Lisp_Object arg) | |||
| 5951 | break; | 5951 | break; |
| 5952 | 5952 | ||
| 5953 | case PVEC_FRAME: | 5953 | case PVEC_FRAME: |
| 5954 | mark_vectorlike (ptr); | 5954 | { |
| 5955 | mark_face_cache (((struct frame *) ptr)->face_cache); | 5955 | struct frame *f = (struct frame *) ptr; |
| 5956 | |||
| 5957 | mark_vectorlike (ptr); | ||
| 5958 | mark_face_cache (f->face_cache); | ||
| 5959 | #ifdef HAVE_WINDOW_SYSTEM | ||
| 5960 | if (FRAME_WINDOW_P (f) && FRAME_X_OUTPUT (f)) | ||
| 5961 | { | ||
| 5962 | struct font *font = FRAME_FONT (f); | ||
| 5963 | |||
| 5964 | if (font && !VECTOR_MARKED_P (font)) | ||
| 5965 | mark_vectorlike ((struct Lisp_Vector *) font); | ||
| 5966 | } | ||
| 5967 | #endif | ||
| 5968 | } | ||
| 5956 | break; | 5969 | break; |
| 5957 | 5970 | ||
| 5958 | case PVEC_WINDOW: | 5971 | case PVEC_WINDOW: |