long registerOffset = info.getRegisterOffset();
byte registerNum = (byte) info.getRegisterID();
int dataSize = info.getByteSize();
- if (info.getArrayCount() > 0) {
+ if (info.isPointerArray()) {
+ dataSize = info.getPointerSize() * info.getArrayCount();
+ } else if (info.isArray()) {
dataSize *= info.getArrayCount();
} else if (info.isString()) {
dataSize = 0;
protected void makeFBISteps(InteractiveInfo info, FunctionBodyInstrumentVariable40 variable) {
InteractiveInfo cursorInfo = info;
while (cursorInfo != null) {
+ int pointerOrder = cursorInfo.getPointerOrder();
+ if (info.isPointerArray()) {
+ pointerOrder = 0; // just request list of pointer address, not value.
+ }
// Add sequence is important. Do not change sequence without consideration.
if (cursorInfo == info) {
FunctionBodyInstrumentStep40 step = new FunctionBodyInstrumentStep40(
- (byte) cursorInfo.getPointerOrder(), 0);
+ (byte) pointerOrder, 0);
variable.addStep(step);
}
InteractiveInfo parentInfo = cursorInfo.getParent();