add: soap->action = NULL; soap->fault = NULL; soap->header = NULL; soap->authrealm = NULL; #ifndef WITH_LEANER soap_clr_mime(soap); #endif
context: soap_dealloc(struct soap *soap, void *p){ if (!soap)    return;  if (p)  { register char **q;    for (q = (char**)&soap->alist; *q; q = *(char***)q)    { if (p == (void*)(*q - *(size_t*)(*q + sizeof(void*))))      { *q = **(char***)q;        DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Freed data at %p\n", p));        SOAP_FREE(p);        return;      }    }    soap_delete(soap, p);  }  else  { register char *q;    while (soap->alist)    { q = (char*)soap->alist;      soap->alist = *(void**)q;      q -= *(size_t*)(q + sizeof(void*));      if (q == (char*)soap->fault)        soap->fault = NULL; /* this was deallocated */      else if (q == (char*)soap->header)        soap->header = NULL; /* this was deallocated */      SOAP_FREE(q);    }    DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Dealloc all data done\n"));  }}