http://d.puremagic.com/issues/show_bug.cgi?id=5176



--- Comment #31 from deadalnix <deadal...@gmail.com> 2013-05-20 01:26:56 PDT ---
(In reply to comment #30)
> (In reply to comment #29)
> > The thing is that you may get over the page protection by several 
> > dereferences.
> 
> What do you mean by several dereferences?
> Can you provide an example?

Yes sure. Let's consider the example below :

struct Foo {
    ubyte[512] bar;
}

struct Buzz {
    ubyte[256] pad;
    Foo[8] qux;
}

Buzz* b;

auto deref1 = (b.qux[7]); // deref below 4kb.
deref1.bar[300]; // offset is bellow 4kb, but teh address is above 4kb.

If we consider deref address only no check happens here. So it is needed to
base the decision to check or not not based on the actual address, but
according the the maximal address possibly reached.

In other words, a 4kb+ conglomerate of value types need null check on every
single pointer operation, even the on bellow 4kb.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------

Reply via email to