Your message dated Sun, 12 Aug 2012 22:28:33 +0100
with message-id <1344806913.2978.93.ca...@jacala.jungle.funky-badger.org>
and subject line Re: Bug#684185: unblock: wmii/3.9.2+debian-4
has caused the Debian Bug report #684185,
regarding unblock: wmii/3.9.2+debian-4
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact ow...@bugs.debian.org
immediately.)


-- 
684185: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=684185
Debian Bug Tracking System
Contact ow...@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
User: release.debian....@packages.debian.org
Usertags: unblock

Please unblock package wmii

unblock wmii/3.9.2+debian-4

Begin forwarded message:

Date: Mon, 16 Jul 2012 21:45:33 +0200
From: Andrew Shadura <bugzi...@tut.by>
To: debian-release@lists.debian.org
Subject: wmii freeze exception


Hello,

There's a nasty bug in wmii, #628575. It's already fixed upstream, and
it's already packaged by me, but that version is certainly unsuitable
for current release so given short enough timeframe I didn't bother
trying to upload it to unstable via my sponsor. However, I've
backported the patch for this particular bug, so users of 3.9.2 can
have it fixed.

Basically, the fix is to add some NULL pointer checks, plus some
changes in boundaries calculations. It's been tested quite extensively:
I've been using patched wmii every day for a whole year without any
troubles. A debdiff is attached, a .dsc can be found here:
http://mentors.debian.net/debian/pool/main/w/wmii/wmii_3.9.2+debian-4.dsc

Please review it an tell me if it fits to be uploaded to unstable with a
freeze exception for wheezy/testing.

P.S. Please Cc me as I'm not subscribed to this list.

-- 
WBR, Andrew


-- 
WBR, Andrew
diff -Nru wmii-3.9.2+debian/debian/changelog wmii-3.9.2+debian/debian/changelog
--- wmii-3.9.2+debian/debian/changelog	2011-07-06 10:05:26.000000000 +0200
+++ wmii-3.9.2+debian/debian/changelog	2012-07-16 13:23:38.000000000 +0200
@@ -1,3 +1,11 @@
+wmii (3.9.2+debian-4) unstable; urgency=low
+
+  * QA upload.
+  * Fix crashes when additional displays are added (backported patch from
+    upstream, closes: #628575).
+
+ -- Andrew O. Shadura <bugzi...@tut.by>  Mon, 16 Jul 2012 13:22:40 +0200
+
 wmii (3.9.2+debian-3) unstable; urgency=low
 
   * QA upload.
diff -Nru wmii-3.9.2+debian/debian/patches/05-fix-xrandr-crash.patch wmii-3.9.2+debian/debian/patches/05-fix-xrandr-crash.patch
--- wmii-3.9.2+debian/debian/patches/05-fix-xrandr-crash.patch	1970-01-01 01:00:00.000000000 +0100
+++ wmii-3.9.2+debian/debian/patches/05-fix-xrandr-crash.patch	2012-07-16 13:11:36.000000000 +0200
@@ -0,0 +1,128 @@
+Description: Fix crash when adding a second display
+Author: Kris Maglione <k...@suckless.org>
+Author: Andrew O. Shadoura <bugzi...@tut.by>
+Bug-Debian: http://bugs.debian.org/628575
+
+--- a/cmd/wmii/fns.h
++++ b/cmd/wmii/fns.h
+@@ -22,21 +22,27 @@
+ /* Grotesque, but worth it. */
+ 
+ #define foreach_area(v, s, a) \
+-	with(int, __alive)                            \
+-	with(Area*, __anext)                          \
+-	for(s=0; _cond(s <= nscreens, 0); _cont(s++)) \
+-		for((a)=(s < nscreens ? (v)->areas[s] : v->floating), __anext=(a)->next; _cond(a, 1); _cont(((a)=__anext) && (__anext=(a)->next)))
++	with(int, __alive)				\
++	with(Area*, __anext)				\
++	for(s=0; _cond(s <= nscreens, 0); _cont(s++))	\
++		for((a)=(s < nscreens ? (v)->areas[s] : v->floating), __anext=((a)?(a)->next:NULL); \
++		    _cond(a, 1);			\
++		    _cont(((a)=__anext) && (__anext=(a)->next)))
+ 
+ #define foreach_column(v, s, a) \
+-	with(int, __alive)                           \
+-	with(Area*, __anext)                         \
+-	for(s=0; _cond(s < nscreens, 0); _cont(s++)) \
+-		for((a)=(v)->areas[s], __anext=(a)->next; _cond(a, 1); _cont(((a)=__anext) && (__anext=(a)->next)))
++	with(int, __alive)				\
++	with(Area*, __anext)				\
++	for(s=0; _cond(s < nscreens, 0); _cont(s++))	\
++		for((a)=(v)->areas[s], __anext=((a)?(a)->next:NULL);	\
++		    _cond(a, 1);				\
++		    _cont(((a)=__anext) && (__anext=(a)->next)))
+ 
+ #define foreach_frame(v, s, a, f) \
+ 	with(Frame*, __fnext)     \
+ 	foreach_area(v, s, a)     \
+-		for((void)(((f)=(a)->frame) && (__fnext=(f)->anext)); _cond(f, 2); _cont(((f)=__fnext) && (__fnext=(f)->anext)))
++		for((void)(((f)=(a)->frame) && (__fnext=(f)?((f)->anext):NULL));	\
++		    _cond(f, 2);					\
++		    _cont(((f)=__fnext) && (__fnext=(f)->anext)))
+ 
+ #define btassert(arg, cond) \
+ 	(cond ? fprint(1, __FILE__":%d: failed assertion: " #cond "\n", __LINE__), backtrace(arg), true : false)
+--- a/cmd/wmii/message.c
++++ b/cmd/wmii/message.c
+@@ -505,6 +505,12 @@
+ 		return nil;
+ 	}
+ 
++	if(!strcmp(s, "xinerama")) {
++		setenv("XINERAMA_SCREENS", m->pos, 1);
++		init_screens();
++		return nil;
++	}
++
+ 	switch(getsym(s)) {
+ 	case LBAR: /* bar on? <"top" | "bottom"> */
+ 		s = msg_getword(m);
+--- a/cmd/wmii/view.c
++++ b/cmd/wmii/view.c
+@@ -86,7 +86,6 @@
+ 	for(i=0; i < nscreens; i++)
+ 		view_init(v, i);
+ 
+-	
+ 	area_focus(v->firstarea);
+ 
+ 	v->next = *vp;
+@@ -108,6 +107,7 @@
+ void
+ view_init(View *v, int iscreen) {
+ 	v->r[iscreen] = screens[iscreen]->r;
++	v->pad[iscreen] = ZR;
+ 	v->areas[iscreen] = nil;
+ 	column_new(v, nil, iscreen, 0);
+ }
+@@ -149,6 +149,7 @@
+ 	}
+ 	free(v->areas);
+ 	free(v->r);
++	free(v->pad);
+ 	free(v);
+ 	ewmh_updateviews();
+ }
+@@ -207,26 +208,39 @@
+ 	WMScreen *scrn;
+ 	Strut *strut;
+ 	Frame *f;
++	int left, right, top, bottom;
+ 	int s, i;
+-	/* These short variable names are hell, eh? */
+ 
+ 	/* XXX:
+ 	if(v != selview)
+ 		return false;
+ 	*/
++
++	top = 0;
++	left = 0;
++	right = 0;
++	bottom = 0;
+ 	vec.n = 0;
+ 	for(f=v->floating->frame; f; f=f->anext) {
+ 		strut = f->client->strut;
+ 		if(!strut)
+ 			continue;
++		/* Can do better in the future. */
++		top = max(top, strut->top.max.y);
++		left = max(left, strut->left.max.x);
++		right = min(right, strut->right.min.x);
++		bottom = min(bottom, strut->bottom.min.y);
+ 		vector_rpush(&vec, strut->top);
+ 		vector_rpush(&vec, strut->left);
+ 		vector_rpush(&vec, rectaddpt(strut->right, Pt(scr.rect.max.x, 0)));
+ 		vector_rpush(&vec, rectaddpt(strut->bottom, Pt(0, scr.rect.max.y)));
+ 	}
+-	/* Find the largest screen space not occupied by struts. */
+ 	vp = unique_rects(&vec, scr.rect);
+-	scrnr = max_rect(vp);
++	scrnr = scr.rect;
++	scrnr.min.y += top;
++	scrnr.min.x += left;
++	scrnr.max.x += right;
++	scrnr.max.y += bottom;
+ 
+ 	/* FIXME: Multihead. */
+ 	v->floating->r = scr.rect;
diff -Nru wmii-3.9.2+debian/debian/patches/series wmii-3.9.2+debian/debian/patches/series
--- wmii-3.9.2+debian/debian/patches/series	2011-07-06 09:59:17.000000000 +0200
+++ wmii-3.9.2+debian/debian/patches/series	2012-07-16 13:22:00.000000000 +0200
@@ -1,5 +1,6 @@
 01-x-terminal-emulator.patch
 02-cflags.patch
 03-font.patch
+05-fix-xrandr-crash.patch
 ld-no-add-needed.patch
 manpage-actions-location.patch

Attachment: signature.asc
Description: PGP signature


--- End Message ---
--- Begin Message ---
On Fri, 2012-08-10 at 22:42 +0200, Andrew Shadura wrote:
> On Wed, 8 Aug 2012 01:05:11 +0200
> Cyril Brulebois <k...@debian.org> wrote:
> 
> > > Please review it an tell me if it fits to be uploaded to unstable
> > > with a freeze exception for wheezy/testing.
> 
> > Please get your package uploaded, and let us (this bug report) know
> > when it's accepted.
> 
> It's been uploaded:

Unblocked; thanks.

Regards,

Adam

--- End Message ---

Reply via email to