aam (03/23/83)
Art Zemon's problem with t/nroff end macros seems to be a bug. If you
are in fill mode and there is a partial line of text pending, you survive
the page break. If there isn't anything pending, you don't. For example,
the following will print "survived page break" on stderr:
.de EM
.fi
a bit of text
'bp
.tm survived page break
..
.em EM
Something to force transition to page 1
Change the .fi to a .nf and it doesn't print anymore:
.de EM
.nf
a bit of text
'bp
.tm survived page break (will never print)
..
.em EM
Something to force transition to page 1
The following change seems to fix the problem without otherwise damaging
t/nroff - though frankly I don't understand the code well enough to know
WHY it works.
*** n7.old Mon Mar 21 12:07:56 1983
--- n7.new Mon Mar 21 12:08:12 1983
***************
*** 1,5
#include "tdef.h"
extern
#include "d.h"
extern
#include "v.h"
--- 1,10 -----
+ /*
+ * HCR: AAM-1, 17 March 1983
+ * - Fix bug involving page breaks in end macros.
+ */
+
#include "tdef.h"
extern
#include "d.h"
extern
#include "v.h"
***************
*** 417,427
lss = j;
if(v.nl < pl)goto nl2;
nl1:
ejf = dip->hnl = v.nl = 0;
ejl = frame;
! if(donef){
if((!nc && !wch) || ndone)done1(0);
ndone++;
donef = 0;
if(frame == stk)nflush++;
}
--- 422,432 -----
lss = j;
if(v.nl < pl)goto nl2;
nl1:
ejf = dip->hnl = v.nl = 0;
ejl = frame;
! if(donef > 0){ /* AAM-1 */
if((!nc && !wch) || ndone)done1(0);
ndone++;
donef = 0;
if(frame == stk)nflush++;
}
***************
Has anyone else ever run into this problem? Is there a better fix?
Allen McIntosh
...decvax!hcr!aam
...allegra!utzoo!hcr!aam