Exemplo n.º 1
0
static GHashTable *
_copy_hash(GHashTable *src)
{
	GHashTable *res = g_hash_table_new_full(g_str_hash, g_str_equal,
			g_free, metautils_gba_unref);
	if (src) {
		GHashTableIter iter;
		gpointer k, v;

		g_hash_table_iter_init(&iter, src);
		while (g_hash_table_iter_next(&iter, &k, &v))
			g_hash_table_insert(res, g_strdup((gchar*)k), metautils_gba_dup(v));
	}

	return res;
}
Exemplo n.º 2
0
static void
ht_iterator(gpointer k, gpointer v, gpointer u)
{
	struct kv_convert_ctx_s *ctx;
	key_value_pair_t *pair;

	ctx = u;
	if (!ctx || ctx->error_met)
		return;
	if (!(pair = g_try_malloc0(sizeof(key_value_pair_t)))) {
		GSETERROR(ctx->err, "Memory allocation failure");
		ctx->error_met = TRUE;
		return;
	}
	if (ctx->copy) {
		pair->key = g_strdup(k);
		pair->value = metautils_gba_dup(v);
	}
	else {
		pair->key = k;
		pair->value = (GByteArray *) v;
	}
	ctx->pairs = g_slist_append(ctx->pairs, pair);
}