Merge pull request #75 from Mincol/mapCreation

NegativeArraySizeException during map creation
This commit is contained in:
abrensch 2017-04-06 08:08:11 +02:00 committed by GitHub
commit 54807da0f7

View file

@ -29,7 +29,7 @@ public class NodeData extends MapCreatorBase
ilon = (int)dis.readDiffed( 1 ); ilon = (int)dis.readDiffed( 1 );
ilat = (int)dis.readDiffed( 2 ); ilat = (int)dis.readDiffed( 2 );
int mode = dis.readByte(); int mode = dis.readByte();
if ( ( mode & 1 ) != 0 ) { int dlen = dis.readByte(); description = new byte[dlen]; dis.readFully( description ); } if ( ( mode & 1 ) != 0 ) { int dlen = dis.readShort(); description = new byte[dlen]; dis.readFully( description ); }
if ( ( mode & 2 ) != 0 ) selev = dis.readShort(); if ( ( mode & 2 ) != 0 ) selev = dis.readShort();
} }
@ -38,9 +38,15 @@ public class NodeData extends MapCreatorBase
dos.writeDiffed( nid, 0 ); dos.writeDiffed( nid, 0 );
dos.writeDiffed( ilon, 1 ); dos.writeDiffed( ilon, 1 );
dos.writeDiffed( ilat, 2 ); dos.writeDiffed( ilat, 2 );
int mode = ( description == null ? 0 : 1 ) | ( selev == Short.MIN_VALUE ? 0 : 2 ); if (description != null && description.length > Byte.MAX_VALUE) {
dos.writeByte( (byte)mode ); System.err.printf("Node id (%s): description length (%d) is longer then maximum allowed (%d). The description will NOT be written.", nid, description.length, Byte.MAX_VALUE);
if ( ( mode & 1 ) != 0 ) { dos.writeByte( description.length ); dos.write( description ); } System.out.printf("Node id (%s): description length (%d) is longer then maximum allowed (%d). The description will NOT be written.", nid, description.length, Byte.MAX_VALUE);
if ( ( mode & 2 ) != 0 ) dos.writeShort( selev ); dos.writeByte((byte) 0);
} else {
int mode = (description == null ? 0 : 1 ) | ( selev == Short.MIN_VALUE ? 0 : 2 );
dos.writeShort( (byte) mode);
if ( ( mode & 1 ) != 0 ) { dos.write( description.length ); dos.write( description ); }
if ( ( mode & 2 ) != 0 ) dos.writeShort( selev );
}
} }
} }