* enqueued, enqueuing the commit in a list of pending commits, in latest
  * commit date first order.
  *
- * The algorithm then preceeds to visit each commit in the pending queue.
+ * The algorithm then proceeds to visit each commit in the pending queue.
  * Upon each visit, the pending mass is added to the mass already seen for that
  * commit and then divided into N equal portions, where N is the number of
  * parents of the commit being visited. The divided portions are then injected
                if (*stack || include_last) {
                        if (!*stack) 
                                next->object.flags |= BOUNDARY;
-                       action = (*emitter) (next);
+                       action = emitter(next);
                }
        }
 
                                if (next->object.flags & UNINTERESTING) {
                                        action = STOP;
                                } else {
-                                       action = (*emitter) (next);
+                                       action = emitter(next);
                                }
                                if (action != STOP) {
                                        next = next->parents->item;
        }
 
        if (next && (action != STOP) && !ret) {
-               (*emitter) (next);
+               emitter(next);
        }
 
        return ret;
                while (reversed) {
                        struct commit * next = pop_commit(&reversed);
 
-                       if (!(next->object.flags & VISITED)) {
+                       if (!(next->object.flags & VISITED) && next!=base) {
                                sort_first_epoch(next, &stack);
                                if (reversed) {
                                        /*