From 585b758281c599be61656eb922cb82ca934dc47f Mon Sep 17 00:00:00 2001 From: daurnimator Date: Wed, 28 Feb 2018 22:31:35 +1100 Subject: src/lobject.js: Fix %p printing two ids --- src/lobject.js | 59 +++++++++++++++++++++++++++++----------------------------- 1 file changed, 30 insertions(+), 29 deletions(-) diff --git a/src/lobject.js b/src/lobject.js index 4b3d0aa..8896c1e 100644 --- a/src/lobject.js +++ b/src/lobject.js @@ -656,38 +656,39 @@ const luaO_pushvfstring = function(L, fmt, argp) { v instanceof LClosure || v instanceof CClosure) { pushstr(L, to_luastring("0x"+v.id.toString(16))); - } - switch(typeof v) { - case "undefined": - pushstr(L, to_luastring("undefined")); - break; - case "number": /* before check object as null is an object */ - pushstr(L, to_luastring("Number("+v+")")); - break; - case "string": /* before check object as null is an object */ - pushstr(L, to_luastring("String("+JSON.stringify(v)+")")); - break; - case "boolean": /* before check object as null is an object */ - pushstr(L, to_luastring(v?"Boolean(true)":"Boolean(false)")); - break; - case "object": - if (v === null) { /* null is special */ - pushstr(L, to_luastring("null")); + } else { + switch(typeof v) { + case "undefined": + pushstr(L, to_luastring("undefined")); + break; + case "number": /* before check object as null is an object */ + pushstr(L, to_luastring("Number("+v+")")); + break; + case "string": /* before check object as null is an object */ + pushstr(L, to_luastring("String("+JSON.stringify(v)+")")); + break; + case "boolean": /* before check object as null is an object */ + pushstr(L, to_luastring(v?"Boolean(true)":"Boolean(false)")); + break; + case "object": + if (v === null) { /* null is special */ + pushstr(L, to_luastring("null")); + break; + } + /* fall through */ + case "function": { + let id = L.l_G.ids.get(v); + if (!id) { + id = L.l_G.id_counter++; + L.l_G.ids.set(v, id); + } + pushstr(L, to_luastring("0x"+id.toString(16))); break; } - /* fall through */ - case "function": { - let id = L.l_G.ids.get(v); - if (!id) { - id = L.l_G.id_counter++; - L.l_G.ids.set(v, id); - } - pushstr(L, to_luastring("0x"+id.toString(16))); - break; + default: + /* user provided object. no id available */ + pushstr(L, to_luastring("")); } - default: - /* user provided object. no id available */ - pushstr(L, to_luastring("")); } break; } -- cgit v1.2.3-70-g09d2