From e97a7d78cf41a7b2da0502648b82389cf5e26971 Mon Sep 17 00:00:00 2001 From: bpb Date: Wed, 18 Mar 2020 16:05:15 -0700 Subject: [PATCH] 8238920: Better Buffer support Reviewed-by: alanb, ahgross, rhalade, psandoz --- .../share/classes/java/nio/Buffer.java | 30 +++++++++++-------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/src/java.base/share/classes/java/nio/Buffer.java b/src/java.base/share/classes/java/nio/Buffer.java index 1e04467b6b..574db70e30 100644 --- a/src/java.base/share/classes/java/nio/Buffer.java +++ b/src/java.base/share/classes/java/nio/Buffer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -345,8 +345,8 @@ public abstract class Buffer { if (newLimit > capacity | newLimit < 0) throw createLimitException(newLimit); limit = newLimit; - if (position > limit) position = limit; - if (mark > limit) mark = -1; + if (position > newLimit) position = newLimit; + if (mark > newLimit) mark = -1; return this; } @@ -637,16 +637,18 @@ public abstract class Buffer { * @return The current position value, before it is incremented */ final int nextGetIndex() { // package-private - if (position >= limit) + int p = position; + if (p >= limit) throw new BufferUnderflowException(); - return position++; + position = p + 1; + return p; } final int nextGetIndex(int nb) { // package-private - if (limit - position < nb) - throw new BufferUnderflowException(); int p = position; - position += nb; + if (limit - p < nb) + throw new BufferUnderflowException(); + position = p + nb; return p; } @@ -658,16 +660,18 @@ public abstract class Buffer { * @return The current position value, before it is incremented */ final int nextPutIndex() { // package-private - if (position >= limit) + int p = position; + if (p >= limit) throw new BufferOverflowException(); - return position++; + position = p + 1; + return p; } final int nextPutIndex(int nb) { // package-private - if (limit - position < nb) - throw new BufferOverflowException(); int p = position; - position += nb; + if (limit - p < nb) + throw new BufferOverflowException(); + position = p + nb; return p; } -- GitLab