X-Git-Url: https://gitweb.fperrin.net/?p=GpsPrune.git;a=blobdiff_plain;f=tim%2Fprune%2Fsave%2Fxml%2FGpxCacher.java;h=9ab8552e771cef536d8e942c17948f6d98fe3e65;hp=2c3204dab3fbee01e698c669d905a12b93e737ff;hb=88f2c3647ed9e055090484f01a959d4581f85e7d;hpb=326f489e36aa7f235bc19409a57bf4955cd50f24 diff --git a/tim/prune/save/xml/GpxCacher.java b/tim/prune/save/xml/GpxCacher.java index 2c3204d..9ab8552 100644 --- a/tim/prune/save/xml/GpxCacher.java +++ b/tim/prune/save/xml/GpxCacher.java @@ -72,9 +72,19 @@ public class GpxCacher implements TagReceiver if (_headerString == null) { _headerString = inTag; } - else { - _strings[_pointNum] = inTag; - _pointNum++; + else if (_strings != null) + { + if (_pointNum < _strings.length) + { + _strings[_pointNum] = inTag; + _pointNum++; + } + else + { + // _pointNum has got too high for the strings array + // This means the cacher has failed, probably by invalid points - need to give up caching here + _strings = null; + } } } @@ -95,7 +105,7 @@ public class GpxCacher implements TagReceiver public String getSourceString(DataPoint inPoint) { int index = _sourceInfo.getIndex(inPoint); - if (index >= 0) { + if (_strings != null && index >= 0 && index < _strings.length) { return _strings[index]; } return null;