From b84b918464c4ea66be3dec1c54e418d40ce5cebb Mon Sep 17 00:00:00 2001 From: =?utf8?q?Nicolas=20Fran=C3=A7ois?= Date: Tue, 13 Aug 2013 23:55:48 +0200 Subject: [PATCH] Avoid dead branches. * lib/subordinateio.c: Avoid dead branches. Note: code is equivalent. --- ChangeLog | 4 +++ lib/subordinateio.c | 70 ++++++++++++++++++++++++--------------------- 2 files changed, 41 insertions(+), 33 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8a80e409..ed54e121 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2013-08-13 Nicolas François + + * lib/subordinateio.c: Avoid dead branches. + 2013-08-13 Nicolas François * src/vipw.c: Fail in case arguments are provided after options. diff --git a/lib/subordinateio.c b/lib/subordinateio.c index 6ed95028..25a2d304 100644 --- a/lib/subordinateio.c +++ b/lib/subordinateio.c @@ -309,39 +309,43 @@ static int remove_range(struct commonio_db *db, if ((end < first) || (start > last)) continue; - /* Is entry completely contained in the range to remove? */ - if ((start <= first) && (end >= last)) { - commonio_del_entry (db, ent); - } - /* Is just the start of the entry removed? */ - else if ((start <= first) && (end < last)) { - range->start = end + 1; - range->count = (last - range->start) + 1; - - ent->changed = true; - db->changed = true; - } - /* Is just the end of the entry removed? */ - else if ((start > first) && (end >= last)) { - range->count = start - range->start; - - ent->changed = true; - db->changed = true; - } - /* The middle of the range is removed */ - else { - struct subordinate_range tail; - tail.owner = range->owner; - tail.start = end + 1; - tail.count = (last - tail.start) + 1; - - if (!commonio_append(db, &tail)) - return 0; - - range->count = start - range->start; - - ent->changed = true; - db->changed = true; + if (start <= first) { + if (end >= last) { + /* entry completely contained in the + * range to remove */ + commonio_del_entry (db, ent); + } else { + /* Remove only the start of the entry */ + range->start = end + 1; + range->count = (last - range->start) + 1; + + ent->changed = true; + db->changed = true; + } + } else { + if (end >= last) { + /* Remove only the end of the entry */ + range->count = start - range->start; + + ent->changed = true; + db->changed = true; + } else { + /* Remove the middle of the range + * This requires to create a new range */ + struct subordinate_range tail; + tail.owner = range->owner; + tail.start = end + 1; + tail.count = (last - tail.start) + 1; + + if (commonio_append(db, &tail) == 0) { + return 0; + } + + range->count = start - range->start; + + ent->changed = true; + db->changed = true; + } } } -- 2.40.0