From 339faa8260370232d82de7b4b73b9a269b45b798 Mon Sep 17 00:00:00 2001 From: Michael Bayne Date: Thu, 9 May 2019 09:33:41 -0700 Subject: [PATCH] Fix incorrect handling of args in format. This is what I get for replacing the battle tested samskivert code with a quick rewrite. --- core/src/main/java/com/threerings/getdown/Log.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/com/threerings/getdown/Log.java b/core/src/main/java/com/threerings/getdown/Log.java index 13b9956..d00a131 100644 --- a/core/src/main/java/com/threerings/getdown/Log.java +++ b/core/src/main/java/com/threerings/getdown/Log.java @@ -69,6 +69,13 @@ public class Log /** We dispatch our log messages through this logging shim. */ public static final Shim log = new Shim(); + /** + * Formats a message with key/value pairs. The pairs will be appended to the message as a + * comma separated list of {@code key=value} in square brackets. + * @param message the main log message. + * @param args the key/value pairs. Any trailing key with no value will be ignored. + * @return the formatted message, i.e. {@code Some log message [key=value, key=value]}. + */ public static String format (Object message, Object... args) { if (args.length < 2) return String.valueOf(message); StringBuilder buf = new StringBuilder(String.valueOf(message)); @@ -76,13 +83,13 @@ public class Log buf.append(' '); } buf.append('['); - for (int ii = 0; ii < args.length; ii += 2) { + for (int ii = 0, ll = args.length/2; ii < ll; ii += 1) { if (ii > 0) { buf.append(',').append(' '); } - buf.append(args[ii]).append('='); + buf.append(args[2*ii]).append('='); try { - buf.append(args[ii+1]); + buf.append(args[2*ii+1]); } catch (Throwable t) { buf.append(""); }