heap: add example on empty heap check
authorEmilio G. Cota <cota@braap.org>
Thu, 12 Sep 2013 16:45:49 +0000 (12:45 -0400)
committerEmilio G. Cota <cota@braap.org>
Thu, 12 Sep 2013 17:58:27 +0000 (13:58 -0400)
Suggested-by: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Emilio G. Cota <cota@braap.org>
ccan/heap/heap.h

index e7694a302fdff9be5c398cdf7843a4f405dbb75f..69368a1ce7191514ed453938084dfc1adfce8add 100644 (file)
@@ -88,7 +88,8 @@ int heap_push(struct heap *h, void *data);
  *
  * Returns the root entry of the heap after extracting it, or NULL on error.
  *
- * Note: Calling heap_pop() on an empty heap is a bug--don't do it.
+ * Note: Calling heap_pop() on an empty heap is a bug. When in doubt,
+ * check heap->len. See heap_peek()'s documentation for an example.
  *
  * Complexity: O(log n)
  *
@@ -102,9 +103,16 @@ void *heap_pop(struct heap *h);
  *
  * Returns the root entry in the heap, without extracting it from @h.
  *
- * Note: Calling heap_peek() on an empty heap is a bug--don't do it.
+ * Note: Calling heap_peek() on an empty heap is a bug; check the heap's
+ * number of items and act accordingly, as in the example below.
  *
  * See also: heap_pop()
+ *
+ * Example:
+ *     static inline void *heap_peek_safe(const struct heap *h)
+ *     {
+ *             return h->len ? heap_peek(h) : NULL;
+ *     }
  */
 static inline void *heap_peek(const struct heap *h)
 {