Здравствуйте, ansi, Вы писали:
А как-нить так не проще?
void free_record(dl_record_t** record)
{
if (record)
{
free((*record)->url);
free((*record)->tag);
free((*record)->last_modified);
free(*record);
*record = 0;
}
return record;
}
dl_record_t *
alloc_record(int url_len, int tag_len, int last_modified_len, int tmp_name_len)
{
dl_record_t *record = 0; //(dl_record_t *)calloc(0, sizeof(*record));
if (
!(record = (dl_record_t *)calloc(0, sizeof(*record))) ||
!(record->url = (char *)calloc(0, url_len + 1))) ||
!(record->tag = (char *)calloc(0, tag_len + 1)) ||
!(record->last_modified = (char *)calloc(0, last_modified_len + 1)) ||
(record->tmp_name = (wchar_t *)calloc(0, (tmp_name_len + 1) * sizeof(wchar_t))) == SYN_NULL
)
free_record(&record);
return record;
}