in src/amqpvalue.c [4799:4878]
static void amqpvalue_clear(AMQP_VALUE_DATA* value_data)
{
switch (value_data->type)
{
default:
break;
case AMQP_TYPE_BINARY:
if (value_data->value.binary_value.bytes != NULL)
{
free((void*)value_data->value.binary_value.bytes);
}
break;
case AMQP_TYPE_STRING:
if (value_data->value.string_value.chars != NULL)
{
free(value_data->value.string_value.chars);
}
break;
case AMQP_TYPE_SYMBOL:
if (value_data->value.symbol_value.chars != NULL)
{
free(value_data->value.symbol_value.chars);
}
break;
case AMQP_TYPE_LIST:
{
if (value_data->value.list_value.items != NULL)
{
size_t i;
for (i = 0; i < value_data->value.list_value.count; i++)
{
amqpvalue_destroy(value_data->value.list_value.items[i]);
}
free(value_data->value.list_value.items);
value_data->value.list_value.items = NULL;
}
break;
}
case AMQP_TYPE_MAP:
{
if (value_data->value.map_value.pairs != NULL)
{
size_t i;
for (i = 0; i < value_data->value.map_value.pair_count; i++)
{
amqpvalue_destroy(value_data->value.map_value.pairs[i].key);
amqpvalue_destroy(value_data->value.map_value.pairs[i].value);
}
free(value_data->value.map_value.pairs);
value_data->value.map_value.pairs = NULL;
}
break;
}
case AMQP_TYPE_ARRAY:
{
if (value_data->value.array_value.items != NULL)
{
size_t i;
for (i = 0; i < value_data->value.array_value.count; i++)
{
amqpvalue_destroy(value_data->value.array_value.items[i]);
}
free(value_data->value.array_value.items);
value_data->value.array_value.items = NULL;
}
break;
}
case AMQP_TYPE_COMPOSITE:
case AMQP_TYPE_DESCRIBED:
amqpvalue_destroy(value_data->value.described_value.descriptor);
amqpvalue_destroy(value_data->value.described_value.value);
break;
}
value_data->type = AMQP_TYPE_UNKNOWN;
}