Skip to content

Commit 59ae939

Browse files
committed
Allow inspect inside hl.NativeArray
1 parent 690fd7d commit 59ae939

File tree

1 file changed

+15
-5
lines changed

1 file changed

+15
-5
lines changed

hld/Eval.hx

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1109,15 +1109,20 @@ class Eval {
11091109
}
11101110

11111111
public function readArrayAddress( value : Value, index : Int ) {
1112-
return switch( value.v ) {
1113-
case VArray(t,len,_,ptr) if( index >= 0 && index < len ):
1114-
var content = readPointer(ptr.offset(align.ptr * 2));
1112+
switch( value.v ) {
1113+
case VArray(t,len,_,ptr) if( index >= 0 && index < len && ptr != null ):
1114+
var content = ptr;
11151115
var offset = align.typeSize(t) * index;
1116-
if( t.isPtr() ) offset += sizeofVArray;
1116+
if( readType(ptr).match(HArray) ) {
1117+
offset += sizeofVArray;
1118+
} else {
1119+
content = readPointer(ptr.offset(align.ptr * 2));
1120+
if( t.isPtr() ) offset += sizeofVArray; // ArrayBytes
1121+
}
11171122
return AAddr(content.offset(offset),t);
11181123
default:
1119-
return ANone;
11201124
}
1125+
return ANone;
11211126
}
11221127

11231128
function valueCast( p : Pointer, t : HLType ) : Value {
@@ -1212,6 +1217,11 @@ class Eval {
12121217
v = VEnum(c.name,[for( a in c.params ) readVal(p.offset(a.offset),a.t)], p);
12131218
case HAbstract("hl_int64_map"):
12141219
v = makeMap(p, HI64);
1220+
case HArray:
1221+
var type = readType(p.offset(align.ptr));
1222+
var length = readI32(p.offset(align.ptr*2));
1223+
var size = align.typeSize(type);
1224+
v = VArray(type, length, function(i) return readVal(p.offset(sizeofVArray + i * size), type), p);
12151225
default:
12161226
}
12171227
return { v : v, t : t };

0 commit comments

Comments
 (0)