Fixed incorrect usage of ByteBuffer.arrayOffset()
* NETTY-368 Wrappedbuffer does not honour posiiton() * and similar mistakes found during a review
This commit is contained in:
parent
55f9597c0f
commit
5af93c2753
@ -313,7 +313,7 @@ public class ChannelBuffers {
|
||||
return EMPTY_BUFFER;
|
||||
}
|
||||
if (buffer.hasArray()) {
|
||||
return wrappedBuffer(buffer.order(), buffer.array(), buffer.arrayOffset(),buffer.remaining());
|
||||
return wrappedBuffer(buffer.order(), buffer.array(), buffer.arrayOffset() + buffer.position(),buffer.remaining());
|
||||
} else {
|
||||
return new ByteBufferBackedChannelBuffer(buffer);
|
||||
}
|
||||
|
@ -100,13 +100,14 @@ class OioDatagramWorker implements Runnable {
|
||||
Object message, SocketAddress remoteAddress) {
|
||||
try {
|
||||
ChannelBuffer buf = (ChannelBuffer) message;
|
||||
int offset = buf.readerIndex();
|
||||
int length = buf.readableBytes();
|
||||
ByteBuffer nioBuf = buf.toByteBuffer();
|
||||
DatagramPacket packet;
|
||||
if (nioBuf.hasArray()) {
|
||||
// Avoid copy if the buffer is backed by an array.
|
||||
packet = new DatagramPacket(
|
||||
nioBuf.array(), nioBuf.arrayOffset(), length);
|
||||
nioBuf.array(), nioBuf.arrayOffset() + offset, length);
|
||||
} else {
|
||||
// Otherwise it will be expensive.
|
||||
byte[] arrayBuf = new byte[length];
|
||||
|
@ -18,10 +18,10 @@ package org.jboss.netty.handler.codec.protobuf;
|
||||
import org.jboss.netty.buffer.ChannelBuffer;
|
||||
import org.jboss.netty.buffer.ChannelBufferInputStream;
|
||||
import org.jboss.netty.channel.Channel;
|
||||
import org.jboss.netty.channel.ChannelHandler.Sharable;
|
||||
import org.jboss.netty.channel.ChannelHandlerContext;
|
||||
import org.jboss.netty.channel.ChannelPipeline;
|
||||
import org.jboss.netty.channel.MessageEvent;
|
||||
import org.jboss.netty.channel.ChannelHandler.Sharable;
|
||||
import org.jboss.netty.handler.codec.frame.FrameDecoder;
|
||||
import org.jboss.netty.handler.codec.frame.LengthFieldBasedFrameDecoder;
|
||||
import org.jboss.netty.handler.codec.frame.LengthFieldPrepender;
|
||||
@ -99,12 +99,13 @@ public class ProtobufDecoder extends OneToOneDecoder {
|
||||
|
||||
ChannelBuffer buf = (ChannelBuffer) msg;
|
||||
if (buf.hasArray()) {
|
||||
final int offset = buf.readerIndex();
|
||||
if(extensionRegistry == null) {
|
||||
return prototype.newBuilderForType().mergeFrom(
|
||||
buf.array(),buf.arrayOffset(), buf.readableBytes()).build();
|
||||
buf.array(), buf.arrayOffset() + offset, buf.readableBytes()).build();
|
||||
} else {
|
||||
return prototype.newBuilderForType().mergeFrom(
|
||||
buf.array(), buf.arrayOffset(), buf.readableBytes(), extensionRegistry).build();
|
||||
buf.array(), buf.arrayOffset() + offset, buf.readableBytes(), extensionRegistry).build();
|
||||
}
|
||||
} else {
|
||||
if (extensionRegistry == null) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user