summaryrefslogtreecommitdiff
path: root/src/os_unix.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/os_unix.c')
-rw-r--r--src/os_unix.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/src/os_unix.c b/src/os_unix.c
index d27b05a6d..07645dc49 100644
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -2703,8 +2703,11 @@ mch_early_init()
void
mch_free_mem()
{
-# if defined(HAVE_SIGALTSTACK) || defined(HAVE_SIGSTACK)
- vim_free(signal_stack);
+# if defined(FEAT_CLIPBOARD) && defined(FEAT_X11)
+ if (clip_star.owned)
+ clip_lose_selection(&clip_star);
+ if (clip_plus.owned)
+ clip_lose_selection(&clip_plus);
# endif
# if (defined(FEAT_X11) && defined(FEAT_XCLIPBOARD)) || defined(PROTO)
if (xterm_Shell != (Widget)0)
@@ -2714,6 +2717,18 @@ mch_free_mem()
if (app_context != (XtAppContext)NULL)
XtDestroyApplicationContext(app_context);
# endif
+# ifdef FEAT_X11
+ if (x11_display != NULL && x11_display != xterm_dpy)
+ XCloseDisplay(x11_display);
+# endif
+# if defined(HAVE_SIGALTSTACK) || defined(HAVE_SIGSTACK)
+ vim_free(signal_stack);
+ signal_stack = NULL;
+# endif
+# ifdef FEAT_TITLE
+ vim_free(oldtitle);
+ vim_free(oldicon);
+# endif
}
#endif