Merge "Issue #626 update WMOHeaderRemover to remove any extra bytes before wmo header found from WMOHeaderFinder." into development

Former-commit-id: 2075d2f125613cf2c69cb3d4166020ed7d9fb175
This commit is contained in:
Richard Peter 2012-09-18 08:19:18 -05:00 committed by Gerrit Code Review
commit 9268dee274

View file

@ -48,25 +48,30 @@ public class WMOHeaderRemover {
return data;
}
// A header we can remove was found. Will discard any data before header
byte[] headerBytes = header.getBytes();
boolean equal = false;
// Do < since there should be something after the header
if (headerBytes.length < data.length) {
equal = true;
for (int i = 0; i < headerBytes.length; ++i) {
if (headerBytes[i] != data[i]) {
equal = false;
// Must be data after header
int endLength = data.length - headerBytes.length;
for (int i = 0; i < endLength; ++i) {
if (data[i] == headerBytes[0]) {
// First byte matches
int tmpI = i;
for (int j = 0; j < headerBytes.length; ++j, ++tmpI) {
if (data[tmpI] != headerBytes[j]) {
tmpI = -1;
break;
}
}
if (tmpI > 0) {
// Copy data and break
byte[] newData = new byte[data.length - tmpI];
System.arraycopy(data, tmpI, newData, 0, newData.length);
data = newData;
break;
}
}
}
if (equal) {
byte[] newData = new byte[data.length - headerBytes.length];
System.arraycopy(data, headerBytes.length, newData, 0,
newData.length);
data = newData;
}
return data;
}
}