vswitchd: Fix svec_diff().
authorBen Pfaff <blp@nicira.com>
Mon, 29 Dec 2008 22:29:26 +0000 (14:29 -0800)
committerBen Pfaff <blp@nicira.com>
Tue, 30 Dec 2008 00:00:34 +0000 (16:00 -0800)
The logic bugs here were causing bridge.c to do too much work adding and
deleting interfaces unnecessarily and perhaps in some circumstances getting
the set of interfaces wrong entirely.

lib/svec.c

index bb58408ee3ff643c0ef65402d1379efc9217bfa3..59d806cf37a6e542217c026e3ef494ece280d64e 100644 (file)
@@ -148,12 +148,12 @@ svec_diff(const struct svec *a, const struct svec *b,
     }
     for (i = j = 0; i < a->n && j < b->n; ) {
         int cmp = strcmp(a->names[i], b->names[j]);
-        if (cmp > 0) {
+        if (cmp < 0) {
             if (a_only) {
                 svec_add(a_only, a->names[i]);
             }
             i++;
-        } else if (cmp < 0) {
+        } else if (cmp > 0) {
             if (b_only) {
                 svec_add(b_only, b->names[j]);
             }