diff --git a/src/jdwp.js b/src/jdwp.js index a175a5b..0413706 100644 --- a/src/jdwp.js +++ b/src/jdwp.js @@ -537,12 +537,12 @@ function _JDWP() { } m = signature.match(/^(\[+)(.+)$/); if (m) { - var elementtype = this.signaturetotype(m[2]); + var elementtype = this.signaturetotype(m[1].slice(0,-1) + m[2]); return { signature:signature, arraydims:m[1].length, elementtype: elementtype, - typename:elementtype.typename+m[1].replace(/\[/g,'[]'), + typename:elementtype.typename+'[]', } } var primitivetypes = { diff --git a/src/variables.js b/src/variables.js index 595887a..d142263 100644 --- a/src/variables.js +++ b/src/variables.js @@ -104,7 +104,7 @@ class AndroidVariables { // get the elements for the specified range return this.dbgr.getarrayvalues(varinfo.arrvar, range[0], count, {varinfo}) .then((elements, x) => { - elements.forEach(el => el.fqname = `${x.varinfo.arrvar.name}[${el.name}]`); + elements.forEach(el => el.fqname = `${x.varinfo.arrvar.fqname || x.varinfo.arrvar.name}[${el.name}]`); x.varinfo.cached = elements; return this._local_to_variable(elements); }); @@ -191,7 +191,7 @@ class AndroidVariables { varref = this._getObjectIdReference(v.type, v.value); this.variableHandles[varref] = { varref:varref, arrvar:v, range:[0,v.arraylen] }; } - objvalue = v.type.typename.replace(/]$/, v.arraylen+']'); // insert len as the final array bound + objvalue = v.type.typename.replace(/]/, v.arraylen+']'); // insert len as the first array bound break; case JTYPES.isObject(v.type): // non-null object instance - add another variable reference so the user can expand