diff --git a/.gitattributes b/.gitattributes index 7bfb7e68c3..a543a218fd 100644 --- a/.gitattributes +++ b/.gitattributes @@ -16247,6 +16247,7 @@ tests/webtbs/tw3411.pp svneol=native#text/plain tests/webtbs/tw34124.pp svneol=native#text/pascal tests/webtbs/tw3418.pp svneol=native#text/plain tests/webtbs/tw3423.pp svneol=native#text/plain +tests/webtbs/tw34239.pp svneol=native#text/pascal tests/webtbs/tw3429.pp svneol=native#text/plain tests/webtbs/tw3433.pp svneol=native#text/plain tests/webtbs/tw3435.pp svneol=native#text/plain diff --git a/packages/rtl-extra/src/inc/objects.pp b/packages/rtl-extra/src/inc/objects.pp index 5044de24db..7a21de7315 100644 --- a/packages/rtl-extra/src/inc/objects.pp +++ b/packages/rtl-extra/src/inc/objects.pp @@ -1014,7 +1014,7 @@ TYPE PPVMT=^PVMT; VMT=RECORD Size,NegSize:Longint; - ParentLink:PVMT; + ParentLink:PPVMT; END; VAR SP:PPVMT; Q:PVMT; BEGIN @@ -1026,7 +1026,10 @@ BEGIN Is_Object:=True; Break; End; - Q:=Q^.Parentlink; + IF Q^.Parentlink<>Nil THEN + Q:=Q^.Parentlink^ + ELSE + Q:=Nil; End; END; diff --git a/tests/webtbs/tw34239.pp b/tests/webtbs/tw34239.pp new file mode 100644 index 0000000000..e2248e9c66 --- /dev/null +++ b/tests/webtbs/tw34239.pp @@ -0,0 +1,25 @@ +program tw34239; +uses + objects; +type + PTObj=^TObj; + TObj=object(TObject) + end; + TObj2=object(TObj) + end; + TSuperObj=object(TObj) + end; + +var + t2:TObj2; + +begin + t2.init; + if not t2.Is_Object(TypeOf(TObj)) then + Halt(1); + if t2.Is_Object(TypeOf(TSuperObj)) then + Halt(2); + //writeln(t2.Is_Object(TypeOf(TObj))); + //writeln(t2.Is_Object(TypeOf(TSuperObj))); + //readln; +end.