* editors/sed.c (process_file): Stop processing deleted lines.
* testsuite/sed/sed-does-not-substitute-in-delete-line: New.
diff --git a/editors/sed.c b/editors/sed.c
index 31b9de0..5edcd48 100644
--- a/editors/sed.c
+++ b/editors/sed.c
@@ -659,6 +659,7 @@
 					/* we are currently within the beginning & ending address range */
 					still_in_range
 			   ) {
+				int deleted = 0;
 
 				/*
 				 * actual sedding
@@ -671,6 +672,7 @@
 
 					case 'd':
 						altered++;
+						deleted = 1;
 						break;
 
 					case 's':
@@ -772,6 +774,9 @@
 				else {
 					still_in_range = 1;
 				}
+
+				if (deleted)
+					break;
 			}
 		}
 
diff --git a/testsuite/sed/sed-does-not-substitute-in-deleted-line b/testsuite/sed/sed-does-not-substitute-in-deleted-line
new file mode 100644
index 0000000..6f106e1
--- /dev/null
+++ b/testsuite/sed/sed-does-not-substitute-in-deleted-line
@@ -0,0 +1,2 @@
+echo foo | busybox sed -e /foo/d -e s/foo/bar/ >foo
+cmp foo /dev/null