From 0b2f11ca5c739442c0e3fabfae11ee7e16107472 Mon Sep 17 00:00:00 2001 From: Enyby Date: Mon, 2 Jul 2018 18:36:08 +0300 Subject: [PATCH] Fix format float numbers Fix bug: https://sourceforge.net/p/luaj/bugs/53/ if System support String.format or fallback to old way. --- src/core/org/luaj/vm2/lib/StringLib.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/core/org/luaj/vm2/lib/StringLib.java b/src/core/org/luaj/vm2/lib/StringLib.java index 1189fc7e..4b7f785c 100644 --- a/src/core/org/luaj/vm2/lib/StringLib.java +++ b/src/core/org/luaj/vm2/lib/StringLib.java @@ -343,6 +343,8 @@ public class StringLib extends TwoArgFunction { public final int conversion; public final int length; + public final String src; + public FormatDesc(Varargs args, LuaString strfrmt, final int start) { int p = start, n = strfrmt.length(); int c = 0; @@ -390,6 +392,8 @@ public class StringLib extends TwoArgFunction { zeroPad &= !leftAdjust; // '-' overrides '0' conversion = c; length = p - start; + String str = strfrmt.tojstring(); + src = str.substring(start - 1, p); } public void format(Buffer buf, byte c) { @@ -465,8 +469,13 @@ public class StringLib extends TwoArgFunction { } public void format(Buffer buf, double x) { - // TODO - buf.append( String.valueOf( x ) ); + String out; + try { + String.format(src, x); + } catch (Throwable e) { + out = String.valueOf( x ); + } + buf.append( out ); } public void format(Buffer buf, LuaString s) {