Ticket #23599: 23599.patch
File 23599.patch, 3.3 KB (added by , 6 weeks ago) |
---|
-
src/org/openstreetmap/josm/io/OsmPbfReader.java
15 15 import java.util.Map; 16 16 import java.util.Set; 17 17 18 import jakarta.annotation.Nonnull;19 import jakarta.annotation.Nullable;20 21 18 import org.apache.commons.compress.utils.CountingInputStream; 22 19 import org.openstreetmap.josm.data.Bounds; 23 20 import org.openstreetmap.josm.data.DataSource; … … 44 41 import org.openstreetmap.josm.gui.progress.ProgressMonitor; 45 42 import org.openstreetmap.josm.tools.Utils; 46 43 44 import jakarta.annotation.Nonnull; 45 import jakarta.annotation.Nullable; 46 47 47 /** 48 48 * Read OSM data from an OSM PBF file 49 49 * @since 18695 … … 578 578 long lon = 0; 579 579 for (int i = 0; i < ids.length; i++) { 580 580 final NodeData node; 581 id += ids[i]; 582 node = new NodeData(id); 581 583 if (denseInfo != null) { 582 584 Info info = denseInfo[i]; 583 id += ids[i];584 node = new NodeData(id);585 585 setOsmPrimitiveData(primitiveBlockRecord, node, info); 586 } else {587 node = new NodeData(ids[i]);588 586 } 589 587 lat += lats[i]; 590 588 lon += lons[i]; … … 795 793 userSid = protobufRecord.asUnsignedVarInt().intValue(); 796 794 break; 797 795 case 6: 798 visible = protobufRecord.asUnsignedVarInt().byteValue() == 0;796 visible = protobufRecord.asUnsignedVarInt().byteValue() == 1; 799 797 break; 800 798 default: // Fall through, since the PBF format could be extended 801 799 } … … 946 944 } 947 945 } 948 946 } 949 if (version.length == timestamp.length && timestamp.length == changeset.length && changeset.length == uid.length && 950 uid.length == userSid.length && (visible == EMPTY_LONG || visible.length == userSid.length)) { 947 if (version.length > 0) { 951 948 Info[] infos = new Info[version.length]; 952 949 long lastTimestamp = 0; // delta encoded 953 950 long lastChangeset = 0; // delta encoded … … 954 951 long lastUid = 0; // delta encoded, 955 952 long lastUserSid = 0; // delta encoded, string id for username 956 953 for (int i = 0; i < version.length; i++) { 957 lastTimestamp += timestamp[i]; 958 lastChangeset += changeset[i]; 959 lastUid += uid[i]; 960 lastUserSid += userSid[i]; 954 if (timestamp.length > i) 955 lastTimestamp += timestamp[i]; 956 if (changeset.length > i) 957 lastChangeset += changeset[i]; 958 if (uid.length > i && userSid.length > i) { 959 lastUid += uid[i]; 960 lastUserSid += userSid[i]; 961 } 961 962 infos[i] = new Info((int) version[i], lastTimestamp, lastChangeset, (int) lastUid, (int) lastUserSid, 962 963 visible == EMPTY_LONG || visible[i] == 1); 963 964 }