summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Beckett <dave@dajobe.org>2015-05-02 15:22:03 -0700
committerDave Beckett <dave@dajobe.org>2015-05-02 15:22:03 -0700
commitce1c7a06f386cbb76319da753d51858dad865f29 (patch)
tree634134b44edb59b27d7e89e9e728f15d6abd1994
parentaf2be0019b9855fb72543ceb70f141c1e1b210e8 (diff)
downloadraptor-ce1c7a06f386cbb76319da753d51858dad865f29.tar.gz
Fix librdfa end_element() generation without sprintf
-rw-r--r--librdfa/rdfa.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/librdfa/rdfa.c b/librdfa/rdfa.c
index de8efbe1..6dadbe0b 100644
--- a/librdfa/rdfa.c
+++ b/librdfa/rdfa.c
@@ -1024,8 +1024,8 @@ static void end_element(void* parser_context, const char* name,
context_stack->items[context_stack->num_items - 1]->data;
/* append the text to the current context's XML literal */
- size_t name_len = strlen(name) + 3;
- char* buffer = (char*)malloc(name_len + 1);
+ size_t name_len = strlen(name);
+ char* buffer = (char*)malloc(name_len + 3 + 1);
#if defined(DEBUG) && DEBUG > 0
printf("DEBUG: </%s>\n", name);
@@ -1035,9 +1035,10 @@ static void end_element(void* parser_context, const char* name,
#endif
buffer[0] = '<';
- memcpy(buffer + 1, name, name_len);
- buffer[name_len + 1] = '>';
- buffer[name_len + 2] = '\0';
+ buffer[1] = '/';
+ memcpy(buffer + 2, name, name_len);
+ buffer[name_len + 2] = '>';
+ buffer[name_len + 3] = '\0';
if(context->xml_literal == NULL)
{
context->xml_literal =