Module Name:    src
Committed By:   martin
Date:           Mon Aug 18 07:44:03 UTC 2014

Modified Files:
        src/usr.bin/sed [netbsd-7]: process.c

Log Message:
Pull up following revision(s) (requested by christos in ticket #34):
        usr.bin/sed/process.c: revision 1.46
PR/49109: Jeremie Le Hen: fix sed relative addressin (1,+N)
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=192108
http://svnweb.freebsd.org/base?view=revision&revision=269302
XXX: pullup 7.


To generate a diff of this commit:
cvs rdiff -u -r1.45 -r1.45.2.1 src/usr.bin/sed/process.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/usr.bin/sed/process.c
diff -u src/usr.bin/sed/process.c:1.45 src/usr.bin/sed/process.c:1.45.2.1
--- src/usr.bin/sed/process.c:1.45	Thu Jun 26 02:14:32 2014
+++ src/usr.bin/sed/process.c	Mon Aug 18 07:44:03 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: process.c,v 1.45 2014/06/26 02:14:32 christos Exp $	*/
+/*	$NetBSD: process.c,v 1.45.2.1 2014/08/18 07:44:03 martin Exp $	*/
 
 /*-
  * Copyright (c) 1992 Diomidis Spinellis.
@@ -38,7 +38,7 @@
 #endif
 
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: process.c,v 1.45 2014/06/26 02:14:32 christos Exp $");
+__RCSID("$NetBSD: process.c,v 1.45.2.1 2014/08/18 07:44:03 martin Exp $");
 #ifdef __FBSDID
 __FBSDID("$FreeBSD: head/usr.bin/sed/process.c 192732 2009-05-25 06:45:33Z brian $");
 #endif
@@ -295,24 +295,32 @@ applies(struct s_command *cp)
 		r = 1;
 	else if (cp->a2)
 		if (cp->startline > 0) {
-			if (MATCH(cp->a2)) {
-				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 &&
-				   linenum > cp->a2->u.l) ||
-				   (cp->a2->type == AT_RELLINE &&
-				   linenum - cp->startline > cp->a2->u.l)) {
-				/*
-				 * We missed the 2nd address due to a branch,
-				 * so just close the range and return false.
-				 */
-				cp->startline = 0;
-				r = 0;
-			} else
-				r = 1;
+			switch (cp->a2->type) {
+			case AT_RELLINE:
+				if (linenum - cp->startline <= cp->a2->u.l)
+					r = 1;
+				else {
+					cp->startline = 0;
+					r = 0;
+				}
+				break;
+			default:
+				if (MATCH(cp->a2)) {
+					cp->startline = 0;
+					lastaddr = 1;
+					r = 1;
+				} else if (cp->a2->type == AT_LINE &&
+				    linenum > cp->a2->u.l) {
+					/*
+					 * We missed the 2nd address due to a
+					 * branch, so just close the range and
+					 * return false.
+					 */
+					cp->startline = 0;
+					r = 0;
+				} else
+					r = 1;
+			}
 		} else if (cp->a1 && MATCH(cp->a1)) {
 			/*
 			 * If the second address is a number less than or

Reply via email to