Patchwork empty range in pop_heap

login
register
mail settings
Submitter Markus Trippelsdorf
Date Dec. 4, 2011, 9:37 a.m.
Message ID <20111204093720.GA17045@x4.trippels.de>
Download mbox | patch
Permalink /patch/129130/
State New
Headers show

Comments

Markus Trippelsdorf - Dec. 4, 2011, 9:37 a.m.
On 2011.12.03 at 15:35 +0000, Jonathan Wakely wrote:
> On 12 November 2011 15:14, Jonathan Wakely wrote:
> > On 12 November 2011 15:04, Marc Glisse wrote:
> >>
> >> Debug-mode seems to check that first,last is a valid range, is a heap, but
> >> not that it is not empty. Maybe it could?
> >
> > Good idea, thanks.  I'll change that.
> 
> As promised.
> 
>         * include/debug/macros.h (__glibcxx_check_non_empty_range): Define.
>         * include/debug/debug.h (__glibcxx_requires_non_empty_range): Define.
>         * include/debug/formatter.h (__msg_non_empty_range): Add.
>         * src/debug.cc: Message text for __msg_non_empty_range.
>         * include/bits/stl_heap.h (pop_heap): Check for non-empty range.
>         * testsuite/25_algorithms/pop_heap/empty_neg.cc: New.
> 
> Tested x86_64-linux, committed to trunk.

Thanks Jonathan.

You forgot to change the second one with the comparison functor.

Patch

diff --git a/libstdc++-v3/include/bits/stl_heap.h b/libstdc++-v3/include/bits/stl_heap.h
index ed7750c..af62525 100644
--- a/libstdc++-v3/include/bits/stl_heap.h
+++ b/libstdc++-v3/include/bits/stl_heap.h
@@ -360,6 +360,7 @@  _GLIBCXX_BEGIN_NAMESPACE_VERSION
       // concept requirements
       __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept<
 	    _RandomAccessIterator>)
+      __glibcxx_requires_non_empty_range(__first, __last);
       __glibcxx_requires_valid_range(__first, __last);
       __glibcxx_requires_heap_pred(__first, __last, __comp);