num = (data->saved_count + 1) % DATE__CACHE_NUM;  data->saved_val[num] = -1; if (!gmtime_r(&val, data->saved_tm + num)) return (NULL); data->saved_val[num] = val; data->saved_count    = num;
if ((ret = date__srch(data, val))) return (ret);  DATE__GET(gmtime_r);
const struct tm *date_gmtime(Date_store *data, time_t val){  unsigned int num = 0;  ASSERT(malloc_check_sz_mem(data, sizeof(Date_store)) || TRUE);    while (num < DATE__CACHE_NUM)  {    if (data->saved_val[num] == val)      return (data->saved_tm + num);        ++num;  }    num = (data->saved_count + 1) % DATE__CACHE_NUM;    data->saved_val[num] = -1;  if (!gmtime_r(&val, data->saved_tm + num))    return (NULL);  data->saved_val[num] = val;  data->saved_count    = num;    return (data->saved_tm + num);}