array_val, array_len, array_item_size);
}
+bundle_keyval_t *bundle_keyval_dup(const bundle_keyval_t *kv)
+{
+ bundle_keyval_t *ret_kv = NULL;
+ void *byte = NULL;
+ size_t byte_len;
+ size_t len;
+
+ if (!kv)
+ return NULL;
+
+ if (keyval_type_is_array(kv->type)) {
+ len = keyval_array_encode(
+ (keyval_array_t *)kv, &byte, &byte_len);
+ if (len == 0)
+ return NULL;
+ len = keyval_array_decode(byte,
+ (keyval_array_t **)&ret_kv, byte_len);
+ free(byte);
+ if (len == 0)
+ return NULL;
+ } else {
+ len = keyval_encode((keyval_t *)kv,
+ (unsigned char **)&byte, &byte_len);
+ if (len == 0)
+ return NULL;
+ len = keyval_decode(
+ (unsigned char *)byte, (keyval_t **)&ret_kv, byte_len);
+ free(byte);
+ if (len == 0)
+ return NULL;
+ }
+ return ret_kv;
+}
+
bundle *bundle_dup(bundle *b_from)
{
bundle *b_to;