[lasem] dom: revert to use -1 as value for NULL terminated buffer



commit e4b9c97903bcd9cd1678a0fec6981631618839f0
Author: Emmanuel Pacaud <emmanuel gnome org>
Date:   Sun Jul 13 23:00:22 2014 +0200

    dom: revert to use -1 as value for NULL terminated buffer
    
    That is consistant with what glib does. The issue in bug
    730284 regarding itex2MML_parse seems not correct, as
    the value passed to itex is the result of strlen if size
    is negative.

 src/lsmdomparser.c      |   14 +++++++-------
 src/lsmdomparser.h      |    4 ++--
 src/lsmitex.c           |   13 ++++++++-----
 src/lsmitex.h           |    2 +-
 src/lsmmathmldocument.c |    4 ++--
 src/lsmmathmldocument.h |    2 +-
 tests/lsmtest.c         |    4 ++--
 7 files changed, 23 insertions(+), 20 deletions(-)
---
diff --git a/src/lsmdomparser.c b/src/lsmdomparser.c
index 402256b..5d0fe9d 100644
--- a/src/lsmdomparser.c
+++ b/src/lsmdomparser.c
@@ -259,7 +259,7 @@ typedef enum {
 
 static LsmDomDocument *
 _parse_memory (LsmDomDocument *document, LsmDomNode *node,
-              const void *buffer, gsize size, GError **error)
+              const void *buffer, gssize size, GError **error)
 {
        static LsmDomSaxParserState state;
 
@@ -269,7 +269,7 @@ _parse_memory (LsmDomDocument *document, LsmDomNode *node,
        else
                state.current_node = LSM_DOM_NODE (document);
 
-       if (size < 1)
+       if (size < 0)
                size = strlen (buffer);
 
        if (xmlSAXUserParseMemory (&sax_handler, &state, buffer, size) < 0) {
@@ -293,18 +293,18 @@ _parse_memory (LsmDomDocument *document, LsmDomNode *node,
  * @document: a #LsmDomDocument
  * @node: a #LsmDomNode
  * @buffer: a memory buffer holding xml data
- * @size: size of the xml data, in bytes, 0 if unknown
+ * @size: size of the xml data, in bytes, -1 if NULL terminated
  * @error: an error placeholder
  *
  * Append a chunk of xml tree to an existing document. The resulting nodes will be appended to
  * @node, or to @document if @node == NULL.
  *
- * Size set to 0 indicates an unknow xml data size.
+ * Size set to -1 indicates the buffer is NULL terminated.
  */
 
 void
 lsm_dom_document_append_from_memory (LsmDomDocument *document, LsmDomNode *node,
-                                    const void *buffer, gsize size, GError **error)
+                                    const void *buffer, gssize size, GError **error)
 {
        g_return_if_fail (LSM_IS_DOM_DOCUMENT (document));
        g_return_if_fail (LSM_IS_DOM_NODE (node) || node == NULL);
@@ -316,14 +316,14 @@ lsm_dom_document_append_from_memory (LsmDomDocument *document, LsmDomNode *node,
 /**
  * lsm_dom_document_new_from_memory:
  * @buffer: xml data
- * @size: size of the data, in bytes, 0 if unknown
+ * @size: size of the data, in bytes, -1 if NULL terminated
  * @error: an error placeholder
  *
  * Create a new document from a memory data buffer.
  */
 
 LsmDomDocument *
-lsm_dom_document_new_from_memory (const void *buffer, gsize size, GError **error)
+lsm_dom_document_new_from_memory (const void *buffer, gssize size, GError **error)
 {
        g_return_val_if_fail (buffer != NULL, NULL);
 
diff --git a/src/lsmdomparser.h b/src/lsmdomparser.h
index 8e89331..28cfb34 100644
--- a/src/lsmdomparser.h
+++ b/src/lsmdomparser.h
@@ -30,8 +30,8 @@
 G_BEGIN_DECLS
 
 void                   lsm_dom_document_append_from_memory     (LsmDomDocument *document, LsmDomNode *node,
-                                                                const void *buffer, gsize size, GError 
**error);
-LsmDomDocument *       lsm_dom_document_new_from_memory        (const void *buffer, gsize size, GError 
**error);
+                                                                const void *buffer, gssize size, GError 
**error);
+LsmDomDocument *       lsm_dom_document_new_from_memory        (const void *buffer, gssize size, GError 
**error);
 LsmDomDocument *       lsm_dom_document_new_from_path          (const char *path, GError **error);
 LsmDomDocument *       lsm_dom_document_new_from_url           (const char *url, GError **error);
 
diff --git a/src/lsmitex.c b/src/lsmitex.c
index 49b3f04..c13ef6d 100644
--- a/src/lsmitex.c
+++ b/src/lsmitex.c
@@ -28,7 +28,7 @@
 /**
  * lsm_itex_to_mathml:
  * @itex: (allow-none): an itex string
- * @size: itex string length, 0 if unknown
+ * @size: itex string length, -1 if NULL terminated
  *
  * Converts an itex string to a Mathml representation.
  *
@@ -36,17 +36,20 @@
  */
 
 char *
-lsm_itex_to_mathml (const char *itex, gsize size)
+lsm_itex_to_mathml (const char *itex, gssize size)
 {
+       gsize usize;
        char *mathml;
 
        if (itex == NULL)
                return NULL;
 
-       if (size < 1)
-               size = strlen (itex);
+       if (size < 0)
+               usize = strlen (itex);
+       else
+               usize = size;
 
-       mathml = itex2MML_parse (itex, size);
+       mathml = itex2MML_parse (itex, usize);
        if (mathml == NULL)
                return NULL;
 
diff --git a/src/lsmitex.h b/src/lsmitex.h
index 266c7be..b520f14 100644
--- a/src/lsmitex.h
+++ b/src/lsmitex.h
@@ -28,7 +28,7 @@
 
 G_BEGIN_DECLS
 
-char *         lsm_itex_to_mathml              (const char *itex, gsize size);
+char *         lsm_itex_to_mathml              (const char *itex, gssize size);
 void           lsm_itex_free_mathml_buffer     (char *mathml);
 
 G_END_DECLS
diff --git a/src/lsmmathmldocument.c b/src/lsmmathmldocument.c
index 825dc8a..684dad5 100644
--- a/src/lsmmathmldocument.c
+++ b/src/lsmmathmldocument.c
@@ -213,7 +213,7 @@ typedef enum {
 } LsmMathmlDocumentError;
 
 LsmMathmlDocument *
-lsm_mathml_document_new_from_itex (const char *itex, gsize size, GError **error)
+lsm_mathml_document_new_from_itex (const char *itex, gssize size, GError **error)
 {
        LsmDomDocument *document;
        char *mathml;
@@ -250,7 +250,7 @@ static LsmMathmlDocument *
 lsm_mathml_document_new_from_itex_file (GFile *file, GError **error)
 {
        LsmMathmlDocument *document;
-       gsize size = 0;
+       gssize size = 0;
        char *contents = NULL;
 
        if (!g_file_load_contents (file, NULL, &contents, &size, NULL, error))
diff --git a/src/lsmmathmldocument.h b/src/lsmmathmldocument.h
index b0dc7dd..4e050be 100644
--- a/src/lsmmathmldocument.h
+++ b/src/lsmmathmldocument.h
@@ -51,7 +51,7 @@ GType lsm_mathml_document_get_type (void);
 LsmDomDocument *       lsm_mathml_document_new                 (void);
 LsmMathmlMathElement *         lsm_mathml_document_get_root_element    (const LsmMathmlDocument *document);
 
-LsmMathmlDocument *    lsm_mathml_document_new_from_itex       (const char *itex, gsize size, GError 
**error);
+LsmMathmlDocument *    lsm_mathml_document_new_from_itex       (const char *itex, gssize size, GError 
**error);
 LsmMathmlDocument *    lsm_mathml_document_new_from_itex_path  (const char *url, GError **error);
 LsmMathmlDocument *    lsm_mathml_document_new_from_itex_url   (const char *url, GError **error);
 
diff --git a/tests/lsmtest.c b/tests/lsmtest.c
index 1fdaf56..b2125f4 100644
--- a/tests/lsmtest.c
+++ b/tests/lsmtest.c
@@ -254,7 +254,7 @@ lasem_test_render (char const *filename, gboolean compare, gboolean dry_run, Sta
        cairo_t *cairo;
        cairo_surface_t *surface;
        char *buffer = NULL;
-       gsize size;
+       gssize size;
        char *png_filename;
        char *reference_png_filename;
        char *test_name;
@@ -300,7 +300,7 @@ lasem_test_render (char const *filename, gboolean compare, gboolean dry_run, Sta
                        xml = buffer;
                else {
                        xml = itex2MML_parse (buffer, size);
-                       size = 0;
+                       size = -1;
                }
 
                timer = g_timer_new ();


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]