diff --git a/core/src/main/java/org/teavm/backend/javascript/rendering/RenderingUtil.java b/core/src/main/java/org/teavm/backend/javascript/rendering/RenderingUtil.java index 5e6e7c68a..667ba3a97 100644 --- a/core/src/main/java/org/teavm/backend/javascript/rendering/RenderingUtil.java +++ b/core/src/main/java/org/teavm/backend/javascript/rendering/RenderingUtil.java @@ -142,14 +142,17 @@ public final class RenderingUtil { } public static String indexToId(int index, String startChars) { - StringBuilder sb = new StringBuilder(); - sb.append(startChars.charAt(index % startChars.length())); - index /= startChars.length(); - while (index > 0) { - sb.append(VARIABLE_PART_CHARS.charAt(index % VARIABLE_PART_CHARS.length())); - index /= VARIABLE_PART_CHARS.length(); + if (index >= startChars.length()) { + index -= startChars.length() - VARIABLE_PART_CHARS.length(); + StringBuilder sb = new StringBuilder(); + while (index >= startChars.length()) { + sb.append(VARIABLE_PART_CHARS.charAt(index % VARIABLE_PART_CHARS.length())); + index /= VARIABLE_PART_CHARS.length(); + } + return sb.append(startChars.charAt(index % startChars.length())).reverse().toString(); + } else { + return String.valueOf(startChars.charAt(index)); } - return sb.toString(); } public static String indexToId(int index) {