diff --git a/CHANGELOG.md b/CHANGELOG.md index f5def56275..e7d2ff9167 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -42,6 +42,16 @@ RELEASING: ### Fixed ### Security +## [unreleased] + +### Added +### Changed +### Deprecated +### Removed +### Fixed +- allow any number of csv columns ([#1436](https://github.com/GIScience/openrouteservice/issues/1436)) +### Security + ## [8.1.1] - 2024-07-17 ### Added - added danish tranlations ([#1809](https://github.com/GIScience/openrouteservice/pull/1809)) diff --git a/ors-engine/src/main/java/org/heigit/ors/routing/pathprocessors/ExtraInfoProcessor.java b/ors-engine/src/main/java/org/heigit/ors/routing/pathprocessors/ExtraInfoProcessor.java index 99fcb6514a..9e0efe1cfb 100644 --- a/ors-engine/src/main/java/org/heigit/ors/routing/pathprocessors/ExtraInfoProcessor.java +++ b/ors-engine/src/main/java/org/heigit/ors/routing/pathprocessors/ExtraInfoProcessor.java @@ -127,6 +127,9 @@ public class ExtraInfoProcessor implements PathProcessor { encoderWithPriority = encoder.supports(PriorityWeighting.class); List skippedExtras = new ArrayList<>(); + //Sufficient size for every extra info except csv. + int buffer_size = 4; + try { PMap params = opts; if (params == null) { @@ -274,6 +277,9 @@ public class ExtraInfoProcessor implements PathProcessor { csvInfo = new RouteExtraInfo("csv"); csvInfoBuilder = new AppendableRouteExtraInfoBuilder(csvInfo); csvColumn = extCsvData.columnIndex(params.getString("weighting_#csv#column", "")); + + //Determine minimal size buffer size, as 4 might not be sufficient. + buffer_size = Math.max(extCsvData.numEntries(), buffer_size); } else { skippedExtras.add("csv"); } @@ -284,7 +290,7 @@ public class ExtraInfoProcessor implements PathProcessor { if (!skippedExtras.isEmpty()) { skippedExtraInfo = String.join(", ", skippedExtras); } - buffer = new byte[4]; + buffer = new byte[buffer_size]; } /**