Revert "miniflow: Remove unused values_inline branch from miniflow_move()"
authorJarno Rajahalme <jrajahalme@nicira.com>
Tue, 26 Aug 2014 22:48:48 +0000 (15:48 -0700)
committerJarno Rajahalme <jrajahalme@nicira.com>
Tue, 26 Aug 2014 22:48:48 +0000 (15:48 -0700)
This reverts commit 29d2aa3aa74ab97df0f00af5bddaa12485c1d39a.

Turns out the code was correct but the dynamic nature of miniflow
inline storage was poorly documented.  A following patch fixes the
documentation.

Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
lib/flow.c

index bef2f27..29b331e 100644 (file)
@@ -1726,9 +1726,12 @@ miniflow_move(struct miniflow *dst, struct miniflow *src)
         dst->values_inline = true;
         memcpy(dst->inline_values, miniflow_get_values(src), size);
         miniflow_destroy(src);
+    } else if (src->values_inline) {
+        dst->values_inline = false;
+        COVERAGE_INC(miniflow_malloc);
+        dst->offline_values = xmalloc(size);
+        memcpy(dst->offline_values, src->inline_values, size);
     } else {
-        ovs_assert(!src->values_inline);
-
         dst->values_inline = false;
         dst->offline_values = src->offline_values;
     }