rem: p = (unsigned char*)soap_save_block(soap, NULL);
add: p = (unsigned char*)soap_save_block(soap, NULL, 0);
context: soap_getbase64(struct soap *soap, int *n, int malloc_flag){#ifdef WITH_FAST  soap->labidx = 0;  for (;;)  { register int i, k;    register char *s;    if (soap_append_lab(soap, NULL, 2))      return NULL;    s = soap->labbuf + soap->labidx;    k = 3 * ((soap->lablen - soap->labidx) / 3);    soap->labidx = 3 * (soap->lablen / 3);    if (!s)      return NULL;    for (i = 0; i < k; i += 3)    { register unsigned long m = 0;      register int j = 0;      do      { register wchar c = soap_get(soap);        if (c == '=' || c < 0)        { unsigned char *p;          switch (j)          { case 2:              *s++ = (char)((m >> 4) & 0xFF);              i++;              break;            case 3:              *s++ = (char)((m >> 10) & 0xFF);              *s++ = (char)((m >> 2) & 0xFF);              i += 2;          }          if (n)            *n = (int)(soap->lablen - k + i);          p = (unsigned char*)soap_malloc(soap, soap->lablen - k + i);	  if (p)	    memcpy(p, soap->labbuf, soap->lablen - k + i);          if (c >= 0)          { while ((int)((c = soap_get(soap)) != EOF) && c != LT && c != TT)              ;	  }          soap_unget(soap, c);          return p;        }        c -= '+';        if (c >= 0 && c <= 79)        { m = (m << 6) + soap_base64i[c];          j++;        }      } while (j < 4);      *s++ = (char)((m >> 16) & 0xFF);      *s++ = (char)((m >> 8) & 0xFF);      *s++ = (char)(m & 0xFF);    }  }#else  if (soap_new_block(soap))    return NULL;  for (;;)  { register int i;    register char *s = (char*)soap_push_block(soap, 3 * SOAP_BLKLEN); /* must be multiple of 3 */    if (!s)    { soap_end_block(soap);      return NULL;    }    for (i = 0; i < SOAP_BLKLEN; i++)    { register unsigned long m = 0;      register int j = 0;      do      { register wchar c = soap_get(soap);        if (c == '=' || c < 0)        { unsigned char *p;          i *= 3;          switch (j)          { case 2:              *s++ = (char)((m >> 4) & 0xFF);              i++;              break;            case 3:              *s++ = (char)((m >> 10) & 0xFF);              *s++ = (char)((m >> 2) & 0xFF);              i += 2;          }          if (n)	    *n = (int)soap_size_block(soap, i);          p = (unsigned char*)soap_save_block(soap, NULL);          if (c >= 0)          { while ((int)((c = soap_get(soap)) != EOF) && c != LT && c != TT)              ;	  }          soap_unget(soap, c);          return p;        }        c -= '+';        if (c >= 0 && c <= 79)        { m = (m << 6) + soap_base64i[c];          j++;        }      } while (j < 4);      *s++ = (char)((m >> 16) & 0xFF);      *s++ = (char)((m >> 8) & 0xFF);      *s++ = (char)(m & 0xFF);    }  }#endif}