Fix a problem with unsatisfied backrefs (noted by Martin Bene).
diff --git a/sed.c b/sed.c
index a18cfc7..352c5c9 100644
--- a/sed.c
+++ b/sed.c
@@ -490,7 +490,7 @@
 	}
 }
 
-static void print_subst_w_backrefs(const char *line, const char *replace, regmatch_t *regmatch)
+static void print_subst_w_backrefs(const char *line, const char *replace, regmatch_t *regmatch, int matches)
 {
 	int i;
 
@@ -506,8 +506,9 @@
 			tmpstr[1] = 0;
 			backref = atoi(tmpstr);
 			/* print out the text held in regmatch[backref] */
-			for (j = regmatch[backref].rm_so; j < regmatch[backref].rm_eo; j++)
-				fputc(line[j], stdout);
+			if (backref <= matches && regmatch[backref].rm_so != -1)
+				for (j = regmatch[backref].rm_so; j < regmatch[backref].rm_eo; j++)
+					fputc(line[j], stdout);
 		}
 
 		/* if we find a backslash escaped character, print the character */
@@ -555,7 +556,8 @@
 			fputc(hackline[i], stdout);
 
 		/* then print the substitution string */
-		print_subst_w_backrefs(hackline, sed_cmd->replace, regmatch);
+		print_subst_w_backrefs(hackline, sed_cmd->replace, regmatch,
+				sed_cmd->num_backrefs);
 
 		/* advance past the match */
 		hackline += regmatch[0].rm_eo;