diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index e45c14031..cf6336f70 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -1,5 +1,6 @@
Amongst other, the following people contributed to ant:
+Adam Blinkinsop
Aleksandr Ishutin
Alexey Panchenko
Alexey Solofnenko
diff --git a/contributors.xml b/contributors.xml
index 3c98eca29..160320e83 100644
--- a/contributors.xml
+++ b/contributors.xml
@@ -30,6 +30,10 @@
These are some of the many people who have helped Ant become so successful.
+
+ Adam
+ Blinkinsop
+
Aleksandr
Ishutin
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/net/RExecTask.java b/src/main/org/apache/tools/ant/taskdefs/optional/net/RExecTask.java
index 0ca112396..a85b0224c 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/net/RExecTask.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/net/RExecTask.java
@@ -203,14 +203,17 @@ public class RExecTask extends Task {
InputStream is = this.getInputStream();
try {
StringBuffer sb = new StringBuffer();
+ int windowStart = -s.length();
if (timeout == null || timeout.intValue() == 0) {
- while (sb.toString().indexOf(s) == -1) {
+ while (windowStart++ < 0
+ || !sb.substring(windowStart).equals(s)) {
sb.append((char) is.read());
}
} else {
Calendar endTime = Calendar.getInstance();
endTime.add(Calendar.SECOND, timeout.intValue());
- while (sb.toString().indexOf(s) == -1) {
+ while (windowStart++ < 0
+ || !sb.substring(windowStart).equals(s)) {
while (Calendar.getInstance().before(endTime)
&& is.available() == 0) {
Thread.sleep(PAUSE_TIME);
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/net/TelnetTask.java b/src/main/org/apache/tools/ant/taskdefs/optional/net/TelnetTask.java
index 3dea2626e..a982764de 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/net/TelnetTask.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/net/TelnetTask.java
@@ -340,14 +340,17 @@ public class TelnetTask extends Task {
InputStream is = this.getInputStream();
try {
StringBuffer sb = new StringBuffer();
+ int windowStart = -s.length();
if (timeout == null || timeout.intValue() == 0) {
- while (sb.toString().indexOf(s) == -1) {
+ while (windowStart++ < 0
+ || !sb.substring(windowStart).equals(s)) {
sb.append((char) is.read());
}
} else {
Calendar endTime = Calendar.getInstance();
endTime.add(Calendar.SECOND, timeout.intValue());
- while (sb.toString().indexOf(s) == -1) {
+ while (windowStart++ < 0
+ || !sb.substring(windowStart).equals(s)) {
while (Calendar.getInstance().before(endTime)
&& is.available() == 0) {
Thread.sleep(WAIT_INTERVAL);