From b84b918464c4ea66be3dec1c54e418d40ce5cebb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Nicolas=20Fran=C3=A7ois?= <nicolas.francois@centraliens.net>
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 | 60 ++++++++++++++++++++++++---------------------
 2 files changed, 36 insertions(+), 28 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  <nicolas.francois@centraliens.net>
+
+	* lib/subordinateio.c: Avoid dead branches.
+
 2013-08-13  Nicolas François  <nicolas.francois@centraliens.net>
 
 	* 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;
+		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;
-		}
-		/* 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;
+			}
+		} else {
+			if (end >= last) {
+				/* Remove only the end of the entry */
+				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;
+				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))
-				return 0;
+				if (commonio_append(db, &tail) == 0) {
+					return 0;
+				}
 
-			range->count = start - range->start;
+				range->count = start - range->start;
 
-			ent->changed = true;
-			db->changed = true;
+				ent->changed = true;
+				db->changed = true;
+			}
 		}
 	}