rem: if (!tag)
add: if (!tag || !*tag)
context: soap_element_end_in(struct soap *soap, const char *tag)  { register soap_wchar c;  register char *s;  register const char *t;  register int n = 0;  if (tag && *tag == '-')    return SOAP_OK;  soap->level--;  soap_pop_namespace(soap);  if (soap->error == SOAP_NO_TAG)    soap->error = SOAP_OK;  if (soap->peeked && *soap->tag)    n++;  soap->peeked = 0;  do  { while (((c = soap_get(soap)) != SOAP_TT))    { if ((int)c == EOF)        return soap->error = SOAP_EOF;      if (c == SOAP_LT)        n++;    }  } while (n--);  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 != SOAP_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 tag name does not match\n"));  return soap->error = SOAP_SYNTAX_ERROR;}