rem: memset(&T, 0, sizeof(struct tm));
add: memset((void*)&T, 0, sizeof(T));
context: soap_s2dateTime(struct soap *soap, const char *s, time_t *p){ if (s)  { struct tm T;    char zone[16];    memset(&T, 0, sizeof(struct tm));    zone[sizeof(zone)-1] = '\0';    sscanf(s, "%d-%d-%dT%d:%d:%d%15s", &T.tm_year, &T.tm_mon, &T.tm_mday, &T.tm_hour, &T.tm_min, &T.tm_sec, zone);    if (T.tm_year == 1)      T.tm_year = 70;    else      T.tm_year -= 1900;    T.tm_mon--;    if (*zone)    { if (*zone == '.')      { for (s = zone + 1; *s; s++)          if (*s < '0' || *s > '9')            break;      }      else        s = zone;      if (*s != 'Z')      { int h = 0, m = 0;        sscanf(s, "%d:%d", &h, &m);        T.tm_hour -= h;        if (h >= 0)          T.tm_min -= m;        else          T.tm_min += m;      }      *p = soap_timegm(&T);    }    else      *p = mktime(&T); /* no time zone: suppose it is localtime? */  }  return SOAP_OK;}