rem: DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Forwarding first href='%s' %p (%u bytes)\n", id, p, (unsigned int)n));
add: DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Forwarding first href='%s' type=%d %p (%u bytes)\n", id, t, p, (unsigned int)n));
context: soap_id_lookup(struct soap *soap, const char *id, void **p, int t, size_t n, unsigned int k){ struct soap_ilist *ip;  void **q;  if (*id == '\0')    return p;  soap->alloced = 0;  if (!p)    p = (void**)soap_malloc(soap, sizeof(void*));  ip = soap_lookup(soap, id); /* lookup pointer to hash table entry for string id */  if (!ip)  { ip = soap_enter(soap, id); /* new hash table entry for string id */    DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Forwarding first href='%s' %p (%u bytes)\n", id, p, (unsigned int)n));    ip->type = t;    ip->size = n;    ip->link = p;    ip->copy = NULL;    ip->flist = NULL;    ip->ptr = NULL;    ip->level = k;    *p = NULL;  }  else if (!soap->blist && ip->ptr)  { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Resolved href='%s' type='%d' (%u bytes)\n", id, t, (unsigned int)n));    if (ip->type != t)    { soap->error = SOAP_HREF;      DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Object mismatch: id's type='%d' href's type='%d'\n", ip->type, t));      return NULL;    }    while (ip->level < k)    { q = (void**)soap_malloc(soap, sizeof(void*));      if (!q)        return NULL;      *p = (void*)q;      p = q;      k--;      DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Descending one level...\n"));    }    *p = ip->ptr;  }  else if (ip->level > k)  { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Resolving level %u pointers to href='%s'\n", ip->level, id));    while (ip->level > k)    { void *s, **r = &ip->link;      q = (void**)ip->link;      while (q)      { *r = (void*)soap_malloc(soap, sizeof(void*));        s = *q;        *q = *r;        r = *(void***)q;        q = (void**)s;      }      *r = NULL;      ip->size = n;      ip->copy = NULL;      ip->level = ip->level - 1;      DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Descending one level...\n"));    }    q = (void**)ip->link;    ip->link = p;    *p = (void*)q;  }  else  { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Forwarded href='%s' (%u bytes)\n", id, (unsigned int)n));    while (ip->level < k)    { q = (void**)soap_malloc(soap, sizeof(void*));      *p = q;      p = q;      k--;      DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Descending one level...\n"));    }    q = (void**)ip->link;    ip->link = p;    *p = (void*)q;  }  return p;}