check if we're in the group already, else multiple calls to

group_movetogroup() on one client will still increment nhidden if the
group is hidden.

found the hard way by Thomas Jeunet and fix from Alexander Polakov -
thanks to both!

ok oga@
This commit is contained in:
okan
2011-12-29 20:48:38 +00:00
parent 50cf571503
commit 42304914dc

View File

@@ -16,7 +16,7 @@
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
* $OpenBSD: group.c,v 1.54 2011/10/12 15:43:50 okan Exp $
* $OpenBSD: group.c,v 1.55 2011/12/29 20:48:38 okan Exp $
*/
#include <sys/param.h>
@@ -222,11 +222,13 @@ group_movetogroup(struct client_ctx *cc, int idx)
err(1, "group_movetogroup: index out of range (%d)", idx);
gc = &sc->groups[idx];
if (cc->group == gc)
return;
if (gc->hidden) {
client_hide(cc);
gc->nhidden++;
}
group_add(&sc->groups[idx], cc);
group_add(gc, cc);
}
/*