feed_items_get: simplify and exit earlier - sfeed_curses - sfeed curses UI (now part of sfeed, development is in sfeed)
 (HTM) git clone git://git.codemadness.org/sfeed_curses
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 74959a9fbbc0599ca3c1b43d435fd57f6af2b1ef
 (DIR) parent 768a524cd3bbfe7c225b08e539a6ba35f9464ecb
 (HTM) Author: Hiltjo Posthuma <hiltjo@codemadness.org>
       Date:   Wed, 14 Jul 2021 17:56:30 +0200
       
       feed_items_get: simplify and exit earlier
       
       This exits before free() or other calls which might reset errno also.
       
       Diffstat:
         M sfeed_curses.c                      |      17 ++++-------------
       
       1 file changed, 4 insertions(+), 13 deletions(-)
       ---
 (DIR) diff --git a/sfeed_curses.c b/sfeed_curses.c
       @@ -1256,7 +1256,7 @@ feed_items_free(struct items *items)
                items->cap = 0;
        }
        
       -int
       +void
        feed_items_get(struct feed *f, FILE *fp, struct items *itemsret)
        {
                struct item *item, *items = NULL;
       @@ -1264,7 +1264,6 @@ feed_items_get(struct feed *f, FILE *fp, struct items *itemsret)
                size_t cap, i, linesize = 0, nitems;
                ssize_t linelen, n;
                off_t offset;
       -        int ret = -1;
        
                cap = nitems = 0;
                offset = 0;
       @@ -1295,22 +1294,16 @@ feed_items_get(struct feed *f, FILE *fp, struct items *itemsret)
                                nitems++;
                        }
                        if (ferror(fp))
       -                        goto err;
       +                        die("getline: %s", f->name);
                        if (n <= 0 || feof(fp))
                                break;
                }
       -        ret = 0;
       -
       -err:
                itemsret->cap = cap;
                itemsret->items = items;
                itemsret->len = nitems;
                free(line);
        
       -        if (ret)
       -                feed_items_free(itemsret);
       -
       -        return ret;
       +        return;
        }
        
        void
       @@ -1345,9 +1338,7 @@ feed_load(struct feed *f, FILE *fp)
                size_t i;
        
                feed_items_free(&items);
       -        if (feed_items_get(f, fp, &items) == -1)
       -                die("%s: %s", __func__, f->name);
       -
       +        feed_items_get(f, fp, &items);
                p = &panes[PaneItems];
                p->pos = 0;
                p->nrows = items.len;