<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Mar 2, 2015 at 8:20 PM, Duncan P. N. Exon Smith <span dir="ltr"><<a href="mailto:dexonsmith@apple.com" target="_blank">dexonsmith@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">> On 2015 Mar 2, at 20:12, Sanjoy Das <<a href="mailto:sanjoy@playingwithpointers.com">sanjoy@playingwithpointers.com</a>> wrote:<br>
><br>
>> Comparing two default constructed iterators should be valid, but<br>
>> I don't understand how your patch affects that operation.  Am I<br>
>> missing something obvious?<br>
><br>
> In the current implementation, default constructed iterators have a<br>
> nullptr epoch address, so looking up their epoch segfaults.<br>
<br>
</span>What I don't see is where you change the comparison of `DenseMapIterator`<br>
to depend on the epoch.  AFAICT, you only modified `++`, `*`, and `->`,<br>
none of which should be called from `==` or `!=`.<br>
<span class=""><br>
><br>
> In any case, the fix should be easy; I just wanted a clarification on<br>
> what the intended semantics are.<br>
><br>
<br>
</span>For `==` and `!=, you shouldn't worry about whether the handle is in sync<br>
with the debug base -- if anything, you should just check that the two<br>
handles are pointing at the same debug base (and have the same epoch as<br>
each other).  (But I still don't see how you've modified `==` or `!=`.)</blockquote></div><br>The comparison operators call operator-></div></div>