aboutsummaryrefslogtreecommitdiff
path: root/util
diff options
context:
space:
mode:
authorBen Gruver <bgruv@google.com>2013-04-16 00:26:24 -0700
committerBen Gruver <bgruv@google.com>2013-04-16 00:26:24 -0700
commitd9c50f3f36b1cc8c3d54426f9022fb638ae6cc8d (patch)
treecbeaed8188b4f813df788379e844e200e652baf4 /util
parentec284003947ada630e5c9e9774b14e37aab46959 (diff)
downloadsmali-d9c50f3f36b1cc8c3d54426f9022fb638ae6cc8d.tar.gz
Fix IndentingWriter.printUnsignedLongAsHex and printSignedIntAsDec
A previous change had introduced a regression where they were printing numbers backwards.
Diffstat (limited to 'util')
-rw-r--r--util/src/main/java/org/jf/util/IndentingWriter.java20
1 files changed, 12 insertions, 8 deletions
diff --git a/util/src/main/java/org/jf/util/IndentingWriter.java b/util/src/main/java/org/jf/util/IndentingWriter.java
index 40401405..ea4ebcfb 100644
--- a/util/src/main/java/org/jf/util/IndentingWriter.java
+++ b/util/src/main/java/org/jf/util/IndentingWriter.java
@@ -34,7 +34,7 @@ import java.io.Writer;
// TODO: add a write(String) method that doesn't scan for embedded newlines?
public class IndentingWriter extends Writer {
protected final Writer writer;
- protected final char[] buffer = new char[16];
+ protected final char[] buffer = new char[24];
protected int indentLevel = 0;
private boolean beginningOfLine = true;
private static final String newLine = System.getProperty("line.separator");
@@ -176,23 +176,25 @@ public class IndentingWriter extends Writer {
}
public void printUnsignedLongAsHex(long value) throws IOException {
- int bufferIndex = 0;
+ int bufferIndex = 23;
do {
int digit = (int)(value & 15);
if (digit < 10) {
- buffer[bufferIndex++] = (char)(digit + '0');
+ buffer[bufferIndex--] = (char)(digit + '0');
} else {
- buffer[bufferIndex++] = (char)((digit - 10) + 'a');
+ buffer[bufferIndex--] = (char)((digit - 10) + 'a');
}
value >>>= 4;
} while (value != 0);
- writeLine(buffer, 0, bufferIndex);
+ bufferIndex++;
+
+ writeLine(buffer, bufferIndex, 24-bufferIndex);
}
public void printSignedIntAsDec(int value) throws IOException {
- int bufferIndex = 0;
+ int bufferIndex = 15;
if (value < 0) {
value *= -1;
@@ -201,11 +203,13 @@ public class IndentingWriter extends Writer {
do {
int digit = value % 10;
- buffer[bufferIndex++] = (char)(digit + '0');
+ buffer[bufferIndex--] = (char)(digit + '0');
value = value / 10;
} while (value != 0);
- writeLine(buffer, 0, bufferIndex);
+ bufferIndex++;
+
+ writeLine(buffer, bufferIndex, 16-bufferIndex);
}
}