diff --git a/common/src/main/java/io/netty/util/ReferenceCountUtil.java b/common/src/main/java/io/netty/util/ReferenceCountUtil.java index 15ce5aa1de..59794e6eec 100644 --- a/common/src/main/java/io/netty/util/ReferenceCountUtil.java +++ b/common/src/main/java/io/netty/util/ReferenceCountUtil.java @@ -15,6 +15,7 @@ */ package io.netty.util; +import io.netty.util.internal.ObjectUtil; import io.netty.util.internal.StringUtil; import io.netty.util.internal.logging.InternalLogger; import io.netty.util.internal.logging.InternalLoggerFactory; @@ -48,6 +49,7 @@ public final class ReferenceCountUtil { */ @SuppressWarnings("unchecked") public static T retain(T msg, int increment) { + ObjectUtil.checkPositive(increment, "increment"); if (msg instanceof ReferenceCounted) { return (T) ((ReferenceCounted) msg).retain(increment); } @@ -95,6 +97,7 @@ public final class ReferenceCountUtil { * If the specified message doesn't implement {@link ReferenceCounted}, this method does nothing. */ public static boolean release(Object msg, int decrement) { + ObjectUtil.checkPositive(decrement, "decrement"); if (msg instanceof ReferenceCounted) { return ((ReferenceCounted) msg).release(decrement); } @@ -125,6 +128,7 @@ public final class ReferenceCountUtil { */ public static void safeRelease(Object msg, int decrement) { try { + ObjectUtil.checkPositive(decrement, "decrement"); release(msg, decrement); } catch (Throwable t) { if (logger.isWarnEnabled()) { @@ -154,6 +158,7 @@ public final class ReferenceCountUtil { */ @Deprecated public static T releaseLater(T msg, int decrement) { + ObjectUtil.checkPositive(decrement, "decrement"); if (msg instanceof ReferenceCounted) { ThreadDeathWatcher.watch(Thread.currentThread(), new ReleasingTask((ReferenceCounted) msg, decrement)); }