diff --git a/QnetGateway.cpp b/QnetGateway.cpp index b87b5b6..26db4b8 100644 --- a/QnetGateway.cpp +++ b/QnetGateway.cpp @@ -999,12 +999,14 @@ void CQnetGateway::ProcessIncomingSD(const SDSVT &dsvt) case 0x30U: // GPS data if (sd.size + sd.ig < 255) { memcpy(sd.gps+sd.ig, c+1, size); - sd.ig += size; - sd.size -= size; if (c[1]=='\r' || c[2]=='\r') { sd.gps[sd.ig + (c[1] == '\r') ? 0 : 1] = '\0'; printf("GPS[%d] String='%s'\n", i, sd.gps); + memset(sd.gps, 0, 256); sd.ig = sd.size = 0; + } else { + sd.ig += size; + sd.size -= size; } } else { printf("GPS string is too large at %d bytes\n", sd.ig + sd.size); @@ -1058,6 +1060,7 @@ void CQnetGateway::ProcessIncomingSD(const SDSVT &dsvt) else sd.gps[sd.ig+2] = '\0'; printf("GPS[%d] string='%s'\n", i, sd.gps); + memset(sd.gps, 0, 256); sd.ig = 0; } else { sd.ig += sd.size;