Fix typo incurring leaks of face structures
authorPo Lu <luangruo@yahoo.com>
Sat, 29 Jun 2024 12:02:45 +0000 (20:02 +0800)
committerPo Lu <luangruo@yahoo.com>
Sat, 29 Jun 2024 12:02:54 +0000 (20:02 +0800)
* src/xfaces.c (free_realized_face): Always free realized face
structures, and avoid sending X requests when the display is not
available, not when it is.

src/xfaces.c

index 1e0196a1171fb15eeea963f09ac874f24adc9f17..188dd4778bcea53d101004cef2795990c4ea2f4b 100644 (file)
@@ -4599,8 +4599,8 @@ free_realized_face (struct frame *f, struct face *face)
          /* This function might be called with the frame's display
             connection deleted, in which event the callbacks below
             should not be executed, as they generate X requests.  */
-         if (FRAME_X_DISPLAY (f))
-           return;
+         if (!FRAME_X_DISPLAY (f))
+           goto free_face;
 #endif /* HAVE_X_WINDOWS */
 
          if (face->gc)
@@ -4619,6 +4619,9 @@ free_realized_face (struct frame *f, struct face *face)
        }
 #endif /* HAVE_WINDOW_SYSTEM */
 
+#ifdef HAVE_X_WINDOWS
+    free_face:
+#endif /* HAVE_X_WINDOWS */
       xfree (face);
     }
 }