--- process.c.orig 2014-07-25 11:15:23.060018631 +0200 +++ process.c 2014-07-25 11:20:38.682146179 +0200 @@ -272,7 +272,9 @@ */ #define MATCH(a) \ ((a)->type == AT_RE ? regexec_e((a)->u.r, ps, 0, 1, psl) : \ - (a)->type == AT_LINE ? linenum == (a)->u.l : lastline()) + (a)->type == AT_LINE ? linenum == (a)->u.l : \ + (a)->type == AT_RELLINE ? linenum - cp->startline == (a)->u.l : \ + lastline()) /* * Return TRUE if the command applies to the current line. Sets the start @@ -292,9 +294,7 @@ cp->startline = 0; lastaddr = 1; r = 1; - } else if (linenum - cp->startline <= cp->a2->u.l) - r = 1; - else if ((cp->a2->type == AT_LINE && + } else if ((cp->a2->type == AT_LINE && linenum > cp->a2->u.l) || (cp->a2->type == AT_RELLINE && linenum - cp->startline > cp->a2->u.l)) {