Changeset 901cee9


Ignore:
Timestamp:
Jul 4, 2011, 12:50:55 AM (13 years ago)
Author:
Jason Gross <jgross@mit.edu>
Branches:
master, release-1.10, release-1.8, release-1.9
Children:
4a01fc6, 95c7f0c, 401752a
Parents:
785ee77
git-author:
Jason Gross <jgross@mit.edu> (07/03/11 23:42:26)
git-committer:
Jason Gross <jgross@mit.edu> (07/04/11 00:50:55)
Message:
Don't segfault when you expunge all messages from the messagelist

When we used owl_list, trying to get an element from an empty list would
return NULL.  When we moved to GPtrArray, we dropped this checking,
without dropping the assumption that, e.g.,
 owl_view_get_element(v, owl_global_get_curmsg(&g));
works everywhere.  This commit adds the logic back in to deal with this
case.

Additionally, don't segfault on things like :unpunt -1.
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • commands.c

    rca749a9 r901cee9  
    24982498  } else if(argc == 2) {
    24992499    /* Handle :unpunt <number> */
    2500     if(unpunt && (i=atoi(argv[1])) !=0) {
     2500    if (unpunt && (i = atoi(argv[1])) > 0) {
    25012501      i--;      /* Accept 1-based indexing */
    25022502      if (i < fl->len) {
  • messagelist.c

    rfc8a87a r901cee9  
    2222void *owl_messagelist_get_element(const owl_messagelist *ml, int n)
    2323{
     24  /* we assume things like owl_view_get_element(v, owl_global_get_curmsg(&g))
     25   * work even when there are no messages in the message list.  So don't
     26   * segfault if someone asks for the zeroth element of an empty list.
     27   */
     28  if (n >= ml->list->len) return NULL;
    2429  return ml->list->pdata[n];
    2530}
Note: See TracChangeset for help on using the changeset viewer.