record_render: allow ws after = in typespec
[yaz-moved-to-github.git] / src / record_render.c
index 983667a..1c8c06a 100644 (file)
@@ -276,7 +276,7 @@ static const char *base64_render(NMEM nmem, WRBUF wrbuf,
                                  const char *expr, const char *type_spec)
 {
 #if YAZ_HAVE_XML2
-    xmlDocPtr doc = xmlParseMemory(buf, *len);
+    xmlDocPtr doc = xmlParseMemory(buf, strlen(buf));
     if (doc)
     {
         xmlChar *buf_out;
@@ -325,7 +325,8 @@ static const char *base64_render(NMEM nmem, WRBUF wrbuf,
             wrbuf_rewind(wrbuf);
             wrbuf_write(wrbuf, (const char *) buf_out, len_out);
             buf = wrbuf_cstr(wrbuf);
-            *len = len_out;
+            if (len)
+                *len = len_out;
         }
         xmlFreeDoc(doc);
         xmlFree(buf_out);
@@ -366,6 +367,8 @@ const char *yaz_record_render(Z_NamePlusRecord *npr, const char *schema,
         {
             size_t j = 0;
             i = i + 8; /* skip charset= */
+            while (cp[i] == ' ')
+                i++;
             for (j = 0; cp[i] && cp[i] != ';' && cp[i] != ' '; i++)
             {
                 if (j < sizeof(charset)-1)
@@ -377,6 +380,8 @@ const char *yaz_record_render(Z_NamePlusRecord *npr, const char *schema,
         {
             size_t j = 0; 
             i = i + 7;
+            while (cp[i] == ' ')
+                i++;
             for (j = 0; cp[i] && cp[i] != ';' && cp[i] != ' '; i++)
             {
                 if (j < sizeof(format)-1)
@@ -388,7 +393,8 @@ const char *yaz_record_render(Z_NamePlusRecord *npr, const char *schema,
         {
             size_t i0;
             i = i + 7;
-
+            while (cp[i] == ' ')
+                i++;
             i0 = i;
             while (cp[i] && cp[i] != ';')
                 i++;