From aea95bd2281afc3021f73ca79ea90bbd0d3a4bd6 Mon Sep 17 00:00:00 2001 From: Havoc Pennington Date: Thu, 12 Apr 2012 15:33:15 -0400 Subject: [PATCH] fix some warnings from findbugs Only one of these, possible incomplete skip from DataInput.skipBytes(), was a real problem I think. --- .../main/java/com/typesafe/config/ConfigParseOptions.java | 1 + .../main/java/com/typesafe/config/impl/ConfigNumber.java | 2 +- .../main/java/com/typesafe/config/impl/ResolveSource.java | 2 +- .../com/typesafe/config/impl/SerializedConfigValue.java | 8 +++++++- .../src/main/java/com/typesafe/config/impl/Tokenizer.java | 5 ++++- 5 files changed, 14 insertions(+), 4 deletions(-) diff --git a/config/src/main/java/com/typesafe/config/ConfigParseOptions.java b/config/src/main/java/com/typesafe/config/ConfigParseOptions.java index 6e1b736e..6b793204 100644 --- a/config/src/main/java/com/typesafe/config/ConfigParseOptions.java +++ b/config/src/main/java/com/typesafe/config/ConfigParseOptions.java @@ -71,6 +71,7 @@ public final class ConfigParseOptions { * @return options with the origin description set */ public ConfigParseOptions setOriginDescription(String originDescription) { + // findbugs complains about == here but is wrong, do not "fix" if (this.originDescription == originDescription) return this; else if (this.originDescription != null && originDescription != null diff --git a/config/src/main/java/com/typesafe/config/impl/ConfigNumber.java b/config/src/main/java/com/typesafe/config/impl/ConfigNumber.java index 30d33014..a90b89b9 100644 --- a/config/src/main/java/com/typesafe/config/impl/ConfigNumber.java +++ b/config/src/main/java/com/typesafe/config/impl/ConfigNumber.java @@ -58,7 +58,7 @@ abstract class ConfigNumber extends AbstractConfigValue implements Serializable @Override public boolean equals(Object other) { // note that "origin" is deliberately NOT part of equality - if (canEqual(other)) { + if (other instanceof ConfigNumber && canEqual(other)) { ConfigNumber n = (ConfigNumber) other; if (isWhole()) { return n.isWhole() && this.longValue() == n.longValue(); diff --git a/config/src/main/java/com/typesafe/config/impl/ResolveSource.java b/config/src/main/java/com/typesafe/config/impl/ResolveSource.java index d7196362..6b5d5a18 100644 --- a/config/src/main/java/com/typesafe/config/impl/ResolveSource.java +++ b/config/src/main/java/com/typesafe/config/impl/ResolveSource.java @@ -48,7 +48,7 @@ final class ResolveSource { context.untrace(); context.trace(unprefixed); - if (result == null && prefixLength > 0) { + if (prefixLength > 0) { result = findInObject(root, context, unprefixed); } diff --git a/config/src/main/java/com/typesafe/config/impl/SerializedConfigValue.java b/config/src/main/java/com/typesafe/config/impl/SerializedConfigValue.java index ead22b43..2520ef20 100644 --- a/config/src/main/java/com/typesafe/config/impl/SerializedConfigValue.java +++ b/config/src/main/java/com/typesafe/config/impl/SerializedConfigValue.java @@ -418,7 +418,13 @@ class SerializedConfigValue extends AbstractConfigValue implements Externalizabl private static void skipField(DataInput in) throws IOException { int len = in.readInt(); - in.skipBytes(len); + // skipBytes doesn't have to block + int skipped = in.skipBytes(len); + if (skipped < len) { + // wastefully use readFully() if skipBytes didn't work + byte[] bytes = new byte[(len - skipped)]; + in.readFully(bytes); + } } @Override diff --git a/config/src/main/java/com/typesafe/config/impl/Tokenizer.java b/config/src/main/java/com/typesafe/config/impl/Tokenizer.java index 4d2f397f..c79bca31 100644 --- a/config/src/main/java/com/typesafe/config/impl/Tokenizer.java +++ b/config/src/main/java/com/typesafe/config/impl/Tokenizer.java @@ -504,7 +504,7 @@ final class Tokenizer { lineOrigin = origin.setLineNumber(lineNumber); return line; } else { - Token t = null; + Token t; if (startOfComment(c)) { t = pullComment(c); } else { @@ -539,6 +539,9 @@ final class Tokenizer { case '+': t = pullPlusEquals(); break; + default: + t = null; + break; } if (t == null) {