anchor.diff:          Next := ThreadDeferred.Next;
           ReturnAddress := ThreadDeferred.ReturnAddress;
   
  -        Self.ErrorAddr := Pointer(ReturnAddress and -2);
  -        if (ReturnAddress and 1 <> 0) then
  +        Self.ErrorAddr := Pointer(NativeInt(ReturnAddress) and MASK_HIGH_NATIVE_TEST);
  +        if (NativeInt(ReturnAddress) < 0) then
           begin
             Self.FreeSmall(ThreadDeferred);
           end else
  
positive.code: procedure TThreadHeap.PushThreadDeferred(P: Pointer; ReturnAddress: Pointer;
    IsSmall: Boolean);
  begin
    PThreadDeferred(P).ReturnAddress := SupposedPtr(ReturnAddress) + Byte(IsSmall);
    Deferreds.Push(P);
  end;
  
  
negative.code: 
          if (Duplicate <> nil) then
          begin
            Self.ErrorAddr := Pointer(NativeInt(Duplicate.ReturnAddress) and MASK_HIGH_NATIVE_TEST);
            Self.RaiseInvalidPtr;
          end;
        end;
  