sed: only dollars as first address are a problem for -u

This commit is contained in:
aiju 2018-11-05 20:17:48 +00:00
parent a86de839ca
commit 1d0f8a7e51

View file

@ -96,7 +96,7 @@ SedCom pspace[MAXCMDS]; /* Command storage */
SedCom *pend = pspace+MAXCMDS; /* End of command storage */ SedCom *pend = pspace+MAXCMDS; /* End of command storage */
SedCom *rep = pspace; /* Current fill point */ SedCom *rep = pspace; /* Current fill point */
int dollars; /* Number of dollar addresses */ int dollars; /* Number of dollar (first) addresses */
Reprog *lastre; /* Last regular expression */ Reprog *lastre; /* Last regular expression */
Resub subexp[MAXSUB]; /* sub-patterns of pattern match*/ Resub subexp[MAXSUB]; /* sub-patterns of pattern match*/
@ -290,6 +290,8 @@ comploop:
address(&rep->ad1); address(&rep->ad1);
if (rep->ad1.type != A_NONE) { if (rep->ad1.type != A_NONE) {
if (rep->ad1.type == A_DOL)
dollars++;
if (rep->ad1.type == A_LAST) { if (rep->ad1.type == A_LAST) {
if (!lastre) if (!lastre)
quit("First RE may not be null"); quit("First RE may not be null");
@ -765,10 +767,9 @@ address(Addr *ap)
int c; int c;
long lno; long lno;
if((c = *cp++) == '$'){ if((c = *cp++) == '$')
ap->type = A_DOL; ap->type = A_DOL;
dollars++; else if(c == '/') {
}else if(c == '/') {
seof = c; seof = c;
if (ap->rp = compile()) if (ap->rp = compile())
ap->type = A_RE; ap->type = A_RE;