Improved array handling. Better multidimensional array support.

This commit is contained in:
adelphes
2017-06-24 16:18:22 +01:00
parent 4a31b83eb9
commit 3dbfd8ef2a
2 changed files with 4 additions and 4 deletions

View File

@@ -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 = {

View File

@@ -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