diff --git a/index.js b/index.js index ead4af8..4c42996 100644 --- a/index.js +++ b/index.js @@ -39,14 +39,13 @@ exports.parse = function(buffer, offset) { name = readCString(); - if (type === Type.None && !name && !Object.keys(obj).length) { - // Root node - name = readCString(); - } - switch (type) { case Type.None: - value = exports.parse(buffer, offset); + if (obj.hasOwnProperty(name)) { + value = obj[name]; + } else { + value = exports.parse(buffer, offset); + } break; case Type.String: @@ -74,9 +73,9 @@ exports.parse = function(buffer, offset) { throw new Error("Unknown KV type " + type + " encountered at offset " + offset[0]); } - if (name) { - obj[name] = convertObject(value); - } + if (name !== undefined) { + obj[name] = convertObject(value); + } } return obj;