When using VPF classes to display DNC (Digital Nautical Chart), coverage is
tiled, so tile drawing code within LibrarySelectionTable and CoverageTable is
exercised.
DNC coverage can have well over 100 features, the bug occurs when you load
enough features and ALL features are unexpectedly blanked out.
There is a mechanism involving these variables:
public final static CopyOnWriteArraySet<VPFTileDirectory>
TILE_DIRECTORIES_LACKING_EDG = new CopyOnWriteArraySet<>();
TILE_DIRECTORIES_LACKING_TFT = new CopyOnWriteArraySet<>();
TILE_DIRECTORIES_LACKING_AFT = new CopyOnWriteArraySet<>();
TILE_DIRECTORIES_LACKING_END = new CopyOnWriteArraySet<>();
which are used to mark primitive tables that are not present for a given
coverage. The programming error is that these are marked static - meaning if a
tile directory for ANY coverage is missing one of the primitive tables, it is
added to the list and now the table is bypassed for ALL coverages. All DNC
features stop displaying and the bug is unrecoverable without restarting.
The simple fix is to REMOVE the static modifier, and IMO they do not need to be
public variables either. This resolves the issue.
Original issue reported on code.google.com by t...@gowebb.com on 11 Sep 2014 at 6:34
Original issue reported on code.google.com by
t...@gowebb.com
on 11 Sep 2014 at 6:34