Various code fixes (#3704)

Correctly close streams.
Avoid ArithmeticException in case of /0.
This commit is contained in:
yueh
2018-08-30 23:12:35 +02:00
committed by GitHub
parent a2091d10fe
commit 758377ed5d
4 changed files with 45 additions and 45 deletions
@@ -56,15 +56,18 @@ public class AEBaseItemBlockChargeable extends AEBaseItemBlock implements IAEIte
double internalCurrentPower = 0; double internalCurrentPower = 0;
final double internalMaxPower = this.getMaxEnergyCapacity(); final double internalMaxPower = this.getMaxEnergyCapacity();
if( tag != null ) if( internalMaxPower > 0 )
{ {
internalCurrentPower = tag.getDouble( "internalCurrentPower" ); if( tag != null )
{
internalCurrentPower = tag.getDouble( "internalCurrentPower" );
}
final double percent = internalCurrentPower / internalMaxPower;
lines.add( GuiText.StoredEnergy.getLocal() + ':' + MessageFormat.format( " {0,number,#} ", internalCurrentPower ) + Platform
.gui_localize( PowerUnits.AE.unlocalizedName ) + " - " + MessageFormat.format( " {0,number,#.##%} ", percent ) );
} }
final double percent = internalCurrentPower / internalMaxPower;
lines.add( GuiText.StoredEnergy.getLocal() + ':' + MessageFormat.format( " {0,number,#} ", internalCurrentPower ) + Platform
.gui_localize( PowerUnits.AE.unlocalizedName ) + " - " + MessageFormat.format( " {0,number,#.##%} ", percent ) );
} }
@Override @Override
@@ -84,7 +84,7 @@ public class PacketMEFluidInventoryUpdate extends AppEngPacket
// int originalBytes = stream.readableBytes(); // int originalBytes = stream.readableBytes();
final GZIPInputStream gzReader = new GZIPInputStream( new InputStream() try( final GZIPInputStream gzReader = new GZIPInputStream( new InputStream()
{ {
@Override @Override
public int read() throws IOException public int read() throws IOException
@@ -96,26 +96,26 @@ public class PacketMEFluidInventoryUpdate extends AppEngPacket
return stream.readByte() & STREAM_MASK; return stream.readByte() & STREAM_MASK;
} }
} ); } ) )
final ByteBuf uncompressed = Unpooled.buffer( stream.readableBytes() );
final byte[] tmp = new byte[TEMP_BUFFER_SIZE];
while( gzReader.available() != 0 )
{ {
final int bytes = gzReader.read( tmp );
if( bytes > 0 ) final ByteBuf uncompressed = Unpooled.buffer( stream.readableBytes() );
final byte[] tmp = new byte[TEMP_BUFFER_SIZE];
while( gzReader.available() != 0 )
{ {
uncompressed.writeBytes( tmp, 0, bytes ); final int bytes = gzReader.read( tmp );
if( bytes > 0 )
{
uncompressed.writeBytes( tmp, 0, bytes );
}
} }
}
gzReader.close();
// int uncompressedBytes = uncompressed.readableBytes(); while( uncompressed.readableBytes() > 0 )
// AELog.info( "Receiver: " + originalBytes + " -> " + uncompressedBytes ); {
this.list.add( AEFluidStack.fromPacket( uncompressed ) );
while( uncompressed.readableBytes() > 0 ) }
{
this.list.add( AEFluidStack.fromPacket( uncompressed ) );
} }
this.empty = this.list.isEmpty(); this.empty = this.list.isEmpty();
@@ -82,7 +82,7 @@ public class PacketMEInventoryUpdate extends AppEngPacket
// int originalBytes = stream.readableBytes(); // int originalBytes = stream.readableBytes();
final GZIPInputStream gzReader = new GZIPInputStream( new InputStream() try( GZIPInputStream gzReader = new GZIPInputStream( new InputStream()
{ {
@Override @Override
public int read() throws IOException public int read() throws IOException
@@ -94,29 +94,29 @@ public class PacketMEInventoryUpdate extends AppEngPacket
return stream.readByte() & STREAM_MASK; return stream.readByte() & STREAM_MASK;
} }
} ); } ) )
final ByteBuf uncompressed = Unpooled.buffer( stream.readableBytes() );
final byte[] tmp = new byte[TEMP_BUFFER_SIZE];
while( gzReader.available() != 0 )
{ {
final int bytes = gzReader.read( tmp ); final ByteBuf uncompressed = Unpooled.buffer( stream.readableBytes() );
if( bytes > 0 ) final byte[] tmp = new byte[TEMP_BUFFER_SIZE];
while( gzReader.available() != 0 )
{ {
uncompressed.writeBytes( tmp, 0, bytes ); final int bytes = gzReader.read( tmp );
if( bytes > 0 )
{
uncompressed.writeBytes( tmp, 0, bytes );
}
} }
}
gzReader.close();
// int uncompressedBytes = uncompressed.readableBytes(); while( uncompressed.readableBytes() > 0 )
// AELog.info( "Receiver: " + originalBytes + " -> " + uncompressedBytes ); {
this.list.add( AEItemStack.fromPacket( uncompressed ) );
while( uncompressed.readableBytes() > 0 ) }
{
this.list.add( AEItemStack.fromPacket( uncompressed ) );
} }
this.empty = this.list.isEmpty(); this.empty = this.list.isEmpty();
} }
// api // api
@@ -102,18 +102,15 @@ final class MinecraftItemCSVExporter implements Exporter
final File file = new File( this.exportDirectory, ITEM_CSV_FILE_NAME ); final File file = new File( this.exportDirectory, ITEM_CSV_FILE_NAME );
try try( final Writer writer = new BufferedWriter( new OutputStreamWriter( new FileOutputStream( file ), Charset.forName( "UTF-8" ) ) ) )
{ {
FileUtils.forceMkdir( this.exportDirectory ); FileUtils.forceMkdir( this.exportDirectory );
final Writer writer = new BufferedWriter( new OutputStreamWriter( new FileOutputStream( file ), Charset.forName( "UTF-8" ) ) );
final String header = this.mode == ExportMode.MINIMAL ? MINIMAL_HEADER : VERBOSE_HEADER; final String header = this.mode == ExportMode.MINIMAL ? MINIMAL_HEADER : VERBOSE_HEADER;
writer.write( header ); writer.write( header );
writer.write( "\n" ); writer.write( "\n" );
writer.write( joined ); writer.write( joined );
writer.flush(); writer.flush();
writer.close();
AELog.info( EXPORT_SUCCESSFUL_MESSAGE, lines.size(), ITEM_CSV_FILE_NAME ); AELog.info( EXPORT_SUCCESSFUL_MESSAGE, lines.size(), ITEM_CSV_FILE_NAME );
} }