From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mo-p00-ob.rzone.de (mo-p00-ob.rzone.de [81.169.146.160]) by krisdoz.my.domain (8.14.3/8.14.3) with ESMTP id p370d8q5006149 for ; Wed, 6 Apr 2011 20:39:10 -0400 (EDT) X-RZG-AUTH: :JiIXek6mfvEEUpFQdo7Fj1/zg48CFjWjQv0cW+St/nW/afgnrylsiW+1ZjV+oGQ= X-RZG-CLASS-ID: mo00 Received: from britannica.bec.de (ip-109-45-139-26.web.vodafone.de [109.45.139.26]) by post.strato.de (jimi mo49) (RZmta 25.10) with (DHE-RSA-AES128-SHA encrypted) ESMTPA id Y048a9n36MahpX for ; Thu, 7 Apr 2011 02:39:04 +0200 (MEST) Received: by britannica.bec.de (sSMTP sendmail emulation); Thu, 07 Apr 2011 02:39:00 +0200 Date: Thu, 7 Apr 2011 02:39:00 +0200 From: Joerg Sonnenberger To: tech@mdocml.bsd.lv Subject: roff conditional recursion Message-ID: <20110407003900.GA20175@britannica.bec.de> Mail-Followup-To: tech@mdocml.bsd.lv X-Mailinglist: mdocml-tech Reply-To: tech@mdocml.bsd.lv MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="OgqxwSJOaUobr8KG" Content-Disposition: inline User-Agent: Mutt/1.5.20 (2009-06-14) --OgqxwSJOaUobr8KG Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Hi Ingo, at the moment, as soon as ROFF_ie is seen, r->stackpos is incremented. This happens in roff.c 1028. But the corresponding code for handling ROFF_el in 995 doesn't decrement it again. Shouldn't it be rule = r->rstack[r->rstackpos--]; in line 998? Attached is a trivial example. Joerg --OgqxwSJOaUobr8KG Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="test.1" .de REQ . if (\n[.$] = 0) \ . return . ds @1 \$1\" . shift 1 . ie (\n[.$] = 0) \{\ . TP 10n . Text \f[CB]\*[@1]\f[] . \} . el \{\ . TP 10n . Text \f[CB]\*[@1]\~\f[]\f[I]\$*\f[] . \} . rm @1 .. .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 .REQ . test .REQ foo test2 .REQ foo test2 .REQ foo test2 --OgqxwSJOaUobr8KG-- -- To unsubscribe send an email to tech+unsubscribe@mdocml.bsd.lv