101edbebbSDon LewisFrom 590681e546cd9aa18d57dc2ea1858cb734a3863f Mon Sep 17 00:00:00 2001
201edbebbSDon LewisFrom: Dave Beckett <dave@dajobe.org>
301edbebbSDon LewisDate: Sun, 16 Apr 2017 23:15:12 +0100
401edbebbSDon LewisSubject: [PATCH] Calcualte max nspace declarations correctly for XML writer
501edbebbSDon Lewis
601edbebbSDon Lewis(raptor_xml_writer_start_element_common): Calculate max including for
701edbebbSDon Lewiseach attribute a potential name and value.
801edbebbSDon Lewis
901edbebbSDon LewisFixes Issues #0000617 http://bugs.librdf.org/mantis/view.php?id=617
1001edbebbSDon Lewisand #0000618 http://bugs.librdf.org/mantis/view.php?id=618
1101edbebbSDon Lewis---
1201edbebbSDon Lewis src/raptor_xml_writer.c | 7 ++++---
1301edbebbSDon Lewis 1 file changed, 4 insertions(+), 3 deletions(-)
1401edbebbSDon Lewis
1501edbebbSDon Lewisdiff --git misc/raptor2-2.0.15/src/raptor_xml_writer.c misc/build/raptor2-2.0.15/src/raptor_xml_writer.c
1601edbebbSDon Lewisindex 693b9468..0d3a36a5 100644
1701edbebbSDon Lewis--- misc/raptor2-2.0.15/src/raptor_xml_writer.c
1801edbebbSDon Lewis+++ misc/build/raptor2-2.0.15/src/raptor_xml_writer.c
1901edbebbSDon Lewis@@ -181,9 +181,10 @@ raptor_xml_writer_start_element_common(raptor_xml_writer* xml_writer,
2001edbebbSDon Lewis   size_t nspace_declarations_count = 0;
2101edbebbSDon Lewis   unsigned int i;
2201edbebbSDon Lewis
2301edbebbSDon Lewis-  /* max is 1 per element and 1 for each attribute + size of declared */
2401edbebbSDon Lewis   if(nstack) {
2501edbebbSDon Lewis-    int nspace_max_count = element->attribute_count+1;
2601edbebbSDon Lewis+    int nspace_max_count = element->attribute_count * 2; /* attr and value */
2701edbebbSDon Lewis+    if(element->name->nspace)
2801edbebbSDon Lewis+      nspace_max_count++;
2901edbebbSDon Lewis     if(element->declared_nspaces)
3001edbebbSDon Lewis       nspace_max_count += raptor_sequence_size(element->declared_nspaces);
3101edbebbSDon Lewis     if(element->xml_language)
32*4d7381f6SJim Jagielski@@ -227,7 +227,7 @@ raptor_xml_writer_start_element_common(raptor_xml_writer* xml_writer,
33*4d7381f6SJim Jagielski
34*4d7381f6SJim Jagielski           /* check it wasn't an earlier declaration too */
35*4d7381f6SJim Jagielski           for(j = 0; j < nspace_declarations_count; j++)
36*4d7381f6SJim Jagielski-            if(nspace_declarations[j].nspace == element->attributes[j]->nspace) {
37*4d7381f6SJim Jagielski+            if(nspace_declarations[j].nspace == element->attributes[i]->nspace) {
38*4d7381f6SJim Jagielski               declare_me = 0;
39*4d7381f6SJim Jagielski               break;
40*4d7381f6SJim Jagielski             }
4101edbebbSDon Lewis@@ -237,7 +238,7 @@ raptor_xml_writer_start_element_common(raptor_xml_writer* xml_writer,
4201edbebbSDon Lewis         }
4301edbebbSDon Lewis       }
4401edbebbSDon Lewis
4501edbebbSDon Lewis-      /* Add the attribute + value */
4601edbebbSDon Lewis+      /* Add the attribute's value */
4701edbebbSDon Lewis       nspace_declarations[nspace_declarations_count].declaration=
4801edbebbSDon Lewis         raptor_qname_format_as_xml(element->attributes[i],
4901edbebbSDon Lewis                                    &nspace_declarations[nspace_declarations_count].length);
50