rem: soap_element_end_in(struct soap *soap, const char *tag) { register wchar c;
add: soap_element_end_in(struct soap *soap, const char *tag) { register soap_wchar c;
context: soap_element_end_in(struct soap *soap, const char *tag){ register wchar c;  register char *s;  register const char *t;  if (tag && *tag == '-')    return SOAP_OK;  soap->level--;  soap_pop_namespace(soap);  if (soap->peeked)  { if (*soap->tag == '\0')    { soap->peeked = 0;      soap->error = SOAP_OK;    }    else      return soap->error = SOAP_SYNTAX_ERROR;  }  else  { while (((c = soap_get(soap)) != TT))    { if ((int)c == EOF)        return soap->error = SOAP_EOF;      if (c == LT)        return soap->error = SOAP_SYNTAX_ERROR;    }  }  s = soap->tag;  do c = soap_get(soap);  while (soap_blank(c));  do  { *s++ = (char)c;    c = soap_get(soap);  } while (soap_notblank(c));  *s = '\0';  if ((int)c == EOF)    return soap->error = SOAP_EOF;  while (soap_blank(c))    c = soap_get(soap);  if (c != GT)    return soap->error = SOAP_SYNTAX_ERROR;  DBGLOG(TEST, SOAP_MESSAGE(fdebug, "End element found (level=%u) '%s'='%s'\n", soap->level, soap->tag, tag?tag:""));  if (!tag)    return SOAP_OK;  if ((s = strchr(soap->tag, ':')))    s++;  else    s = soap->tag;  if ((t = strchr(tag, ':')))    t++;  else    t = tag;  if (!SOAP_STRCMP(s, t))    return SOAP_OK;  DBGLOG(TEST, SOAP_MESSAGE(fdebug, "End element does not match\n"));  return soap->error = SOAP_SYNTAX_ERROR;}