FpDebug: fix typecast/deref for generated-pointer-type "^Foo($1234)", for signed values.

git-svn-id: trunk@62810 -
This commit is contained in:
martin 2020-03-25 15:51:07 +00:00
parent ab7cad1fc8
commit 1f69cf465e
2 changed files with 12 additions and 2 deletions

View File

@ -637,7 +637,7 @@ end;
function TFpPasParserValueCastToPointer.GetFieldFlags: TFpValueFieldFlags;
begin
if (FValue.FieldFlags * [svfAddress, svfCardinal] <> [])
if (FValue.FieldFlags * [svfAddress, svfOrdinal] <> [])
then
Result := [svfOrdinal, svfCardinal, svfSizeOfPointer, svfDataAddress]
else
@ -655,7 +655,7 @@ var
begin
Result := 0;
f := FValue.FieldFlags;
if svfCardinal in f then
if svfOrdinal in f then
Result := FValue.AsCardinal
else
if svfAddress in f then begin

View File

@ -1782,6 +1782,11 @@ StartIdx := t.Count; // tlConst => Only eval the watch. No tests
if p='gv' then
t.Add(AName, 'PTxWord(gvp_'+'Word'+e+')^', weCardinal(100+n, 'TxWord', 2));
t.Add(AName, 'PTxWord($'+IntToHex(StrToInt64Def(val, 0), 8)+')^', weCardinal(100+n, 'TxWord', 2));
t.Add(AName, '^TxWord('+val+')^', weCardinal(100+n, 'TxWord', 2));
t.Add(AName, '^TxWord($'+IntToHex(StrToInt64Def(val, 0), 8)+')^', weCardinal(100+n, 'TxWord', 2));
val := t2.Tests[6]^.TstWatch.Values[Thread, 0].Value;
t.Add(AName, 'PTxFiveRec(@'+p+'FiveRec'+e+')^', weMatch('a *=.*b *= *44',skRecord));
t.Add(AName, 'PTxFiveRec('+val+')^', weMatch('a *=.*b *= *44',skRecord));
@ -1885,6 +1890,11 @@ begin
//t.CheckResults;
t.Clear;
t.Add('pbyte(0)', 'pbyte(0)', wePointerAddr(nil, 'PByte'));
t.Add('pbyte($0)', 'pbyte($0)', wePointerAddr(nil, 'PByte'));
t.Add('^byte(0)', '^byte(0)', wePointerAddr(nil, '^Byte'));
t.Add('^byte($0)', '^byte($0)', wePointerAddr(nil, '^Byte'));
AddWatchesConv(t, 'glob const', 'gc', 000, 'A', tlConst);
AddWatchesConv(t, 'glob var', 'gv', 001, 'B');