diff options
| author | Bananeweizen <bananeweizen@gmx.de> | 2013-01-05 11:03:58 +0100 |
|---|---|---|
| committer | Bananeweizen <bananeweizen@gmx.de> | 2013-01-05 11:03:58 +0100 |
| commit | 68069dc6982f3a2c87690eb9171f5820064ebbab (patch) | |
| tree | 0be0bf26f5d3d272224d048d82fc32abef37a188 /main/src/cgeo/geocaching/files/LocParser.java | |
| parent | 656e92453fcf0e9d7da137cd4c3551b6530e9969 (diff) | |
| download | cgeo-68069dc6982f3a2c87690eb9171f5820064ebbab.zip cgeo-68069dc6982f3a2c87690eb9171f5820064ebbab.tar.gz cgeo-68069dc6982f3a2c87690eb9171f5820064ebbab.tar.bz2 | |
fix #2328: Have a wrapper around Matcher to avoid String related memory
issues
Diffstat (limited to 'main/src/cgeo/geocaching/files/LocParser.java')
| -rw-r--r-- | main/src/cgeo/geocaching/files/LocParser.java | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/main/src/cgeo/geocaching/files/LocParser.java b/main/src/cgeo/geocaching/files/LocParser.java index 9c24d39..730e224 100644 --- a/main/src/cgeo/geocaching/files/LocParser.java +++ b/main/src/cgeo/geocaching/files/LocParser.java @@ -9,6 +9,7 @@ import cgeo.geocaching.enumerations.LoadFlags; import cgeo.geocaching.geopoint.Geopoint; import cgeo.geocaching.utils.CancellableHandler; import cgeo.geocaching.utils.Log; +import cgeo.geocaching.utils.MatcherWrapper; import org.apache.commons.lang3.StringUtils; @@ -22,7 +23,6 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; -import java.util.regex.Matcher; import java.util.regex.Pattern; public final class LocParser extends FileParser { @@ -148,12 +148,12 @@ public final class LocParser extends FileParser { public static cgCache parseCache(final String pointString) { final cgCache cache = new cgCache(); - final Matcher matcherGeocode = patternGeocode.matcher(pointString); + final MatcherWrapper matcherGeocode = new MatcherWrapper(patternGeocode, pointString); if (matcherGeocode.find()) { cache.setGeocode(matcherGeocode.group(1).trim()); } - final Matcher matcherName = patternName.matcher(pointString); + final MatcherWrapper matcherName = new MatcherWrapper(patternName, pointString); if (matcherName.find()) { final String name = matcherName.group(1).trim(); cache.setName(StringUtils.substringBeforeLast(name, " by ").trim()); @@ -161,24 +161,24 @@ public final class LocParser extends FileParser { cache.setName(cache.getGeocode()); } - final Matcher matcherLat = patternLat.matcher(pointString); - final Matcher matcherLon = patternLon.matcher(pointString); + final MatcherWrapper matcherLat = new MatcherWrapper(patternLat, pointString); + final MatcherWrapper matcherLon = new MatcherWrapper(patternLon, pointString); if (matcherLat.find() && matcherLon.find()) { cache.setCoords(parsePoint(matcherLat.group(1).trim(), matcherLon.group(1).trim())); } - final Matcher matcherDifficulty = patternDifficulty.matcher(pointString); + final MatcherWrapper matcherDifficulty = new MatcherWrapper(patternDifficulty, pointString); try { if (matcherDifficulty.find()) { cache.setDifficulty(Float.parseFloat(matcherDifficulty.group(1).trim())); } - final Matcher matcherTerrain = patternTerrain.matcher(pointString); + final MatcherWrapper matcherTerrain = new MatcherWrapper(patternTerrain, pointString); if (matcherTerrain.find()) { cache.setTerrain(Float.parseFloat(matcherTerrain.group(1).trim())); } - final Matcher matcherContainer = patternContainer.matcher(pointString); + final MatcherWrapper matcherContainer = new MatcherWrapper(patternContainer, pointString); if (matcherContainer.find()) { final int size = Integer.parseInt(matcherContainer.group(1).trim()); if (size >= 1 && size <= 8) { |
