Re: Опять goto :)
От: g_i  
Дата: 14.01.06 08:28
Оценка: 16 (3)
Здравствуйте, 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;
}


 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.