From 759d80dfe37177b9f9c6196624d5ea07027cf9d3 Mon Sep 17 00:00:00 2001
From: Nikolaj Bjorner <nbjorner@microsoft.com>
Date: Thu, 7 Nov 2013 12:15:51 -0800
Subject: [PATCH] fix regression

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
---
 src/smt/theory_card.cpp      | 4 ++--
 src/test/sorting_network.cpp | 2 ++
 src/util/sorting_network.h   | 4 ++--
 3 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/smt/theory_card.cpp b/src/smt/theory_card.cpp
index 3c4cb21f4..ebcd52d56 100644
--- a/src/smt/theory_card.cpp
+++ b/src/smt/theory_card.cpp
@@ -304,7 +304,7 @@ namespace smt {
             lbool val = ctx.get_assignment(bv);
             if (inc_min(inc, val) == l_true) {
                 curr_min += abs(inc);
-                lits.push_back(literal(bv, val != l_true));
+                lits.push_back(literal(bv, val == l_true));
             }
         }
         return curr_min;
@@ -424,7 +424,7 @@ namespace smt {
             }
             else if (vars[mid].first < bv) {
                 lo = mid;
-                mid += (hi-mid)/2;
+                mid += (hi-mid)/2 + 1;
             }
             else {
                 hi = mid;
diff --git a/src/test/sorting_network.cpp b/src/test/sorting_network.cpp
index a6ec9e5e2..5ae6362b1 100644
--- a/src/test/sorting_network.cpp
+++ b/src/test/sorting_network.cpp
@@ -111,6 +111,8 @@ static void test_sorting4() {
     svector<unsigned> in;
     in.resize(5);
     test_sorting4_r(0, in);
+    in.resize(8);
+    test_sorting4_r(0, in);
 }
 
 void test_sorting3() {
diff --git a/src/util/sorting_network.h b/src/util/sorting_network.h
index c4f6d027c..f4eb4b032 100644
--- a/src/util/sorting_network.h
+++ b/src/util/sorting_network.h
@@ -96,11 +96,11 @@ Notes:
         {}
         
         void operator()(vect const& in, vect& out) {
+            out.reset();
+            out.append(in);
             if (in.size() <= 1) {
                 return;
             }
-            out.reset();
-            out.append(in);
             while (!is_power_of2(out.size())) {
                 out.push_back(m_ext.mk_default());
             }