Date: Sun, 12 Jul 2015 16:02:28 +0000 (UTC) From: Joe Marcus Clarke <marcus@FreeBSD.org> To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r391782 - in head/net-im: finch libpurple/files Message-ID: <201507121602.t6CG2S0v072959@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: marcus Date: Sun Jul 12 16:02:28 2015 New Revision: 391782 URL: https://svnweb.freebsd.org/changeset/ports/391782 Log: Fix a crash caused by changing window size. PR: 200936 Added: head/net-im/libpurple/files/patch-finch_libgnt_gntmain.c (contents, props changed) Modified: head/net-im/finch/Makefile Modified: head/net-im/finch/Makefile ============================================================================== --- head/net-im/finch/Makefile Sun Jul 12 13:05:02 2015 (r391781) +++ head/net-im/finch/Makefile Sun Jul 12 16:02:28 2015 (r391782) @@ -3,6 +3,7 @@ # $MCom: ports-stable/net-im/gaim-consoleui-devel/Makefile,v 1.2 2006/10/29 18:55:28 marcus Exp $ PORTNAME= finch +PORTREVISION= 1 MAINTAINER= marcus@FreeBSD.org COMMENT= Finch multi-protocol messaging client (Console UI) Added: head/net-im/libpurple/files/patch-finch_libgnt_gntmain.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/net-im/libpurple/files/patch-finch_libgnt_gntmain.c Sun Jul 12 16:02:28 2015 (r391782) @@ -0,0 +1,74 @@ +--- finch/libgnt/gntmain.c.orig 2015-07-10 05:07:01.325805007 -0400 ++++ finch/libgnt/gntmain.c 2015-07-10 13:05:46.746810688 -0400 +@@ -407,10 +407,11 @@ raise: + + #ifdef SIGWINCH + static void (*org_winch_handler)(int); ++static void (*org_winch_handler_sa)(int, siginfo_t *, void *); + #endif + + static void +-sighandler(int sig) ++sighandler(int sig, siginfo_t *info, void *data) + { + switch (sig) { + #ifdef SIGWINCH +@@ -419,16 +420,15 @@ sighandler(int sig) + g_idle_add((GSourceFunc)refresh_screen, NULL); + if (org_winch_handler) + org_winch_handler(sig); +- signal(SIGWINCH, sighandler); ++ if (org_winch_handler_sa) ++ org_winch_handler_sa(sig, info, data); + break; + #endif + case SIGCHLD: + clean_pid(); +- signal(SIGCHLD, sighandler); + break; + case SIGINT: + ask_before_exit(); +- signal(SIGINT, sighandler); + break; + } + } +@@ -456,6 +456,10 @@ void gnt_init() + { + char *filename; + const char *locale; ++ struct sigaction act; ++#ifdef SIGWINCH ++ struct sigaction oact; ++#endif + + if (channel) + return; +@@ -501,11 +505,25 @@ void gnt_init() + werase(stdscr); + wrefresh(stdscr); + ++ act.sa_sigaction = sighandler; ++ sigemptyset(&act.sa_mask); ++ act.sa_flags = SA_SIGINFO; ++ + #ifdef SIGWINCH +- org_winch_handler = signal(SIGWINCH, sighandler); ++ org_winch_handler = NULL; ++ org_winch_handler_sa = NULL; ++ sigaction(SIGWINCH, &act, &oact); ++ if (oact.sa_flags & SA_SIGINFO) ++ { ++ org_winch_handler_sa = oact.sa_sigaction; ++ } ++ else if (oact.sa_handler != SIG_DFL && oact.sa_handler != SIG_IGN) ++ { ++ org_winch_handler = oact.sa_handler; ++ } + #endif +- signal(SIGCHLD, sighandler); +- signal(SIGINT, sighandler); ++ sigaction(SIGCHLD, &act, NULL); ++ sigaction(SIGINT, &act, NULL); + signal(SIGPIPE, SIG_IGN); + + #if !GLIB_CHECK_VERSION(2, 36, 0)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201507121602.t6CG2S0v072959>