Gitweb links:

...log 
http://git.netsurf-browser.org/libnslayout.git/shortlog/c8e49af1cbd7d17b37f579bdb8d02bfcc6d982bb
...commit 
http://git.netsurf-browser.org/libnslayout.git/commit/c8e49af1cbd7d17b37f579bdb8d02bfcc6d982bb
...tree 
http://git.netsurf-browser.org/libnslayout.git/tree/c8e49af1cbd7d17b37f579bdb8d02bfcc6d982bb

The branch, master has been updated
       via  c8e49af1cbd7d17b37f579bdb8d02bfcc6d982bb (commit)
       via  46305b75b9a4ec8f0e4a93e3efb1b8e12ff2f390 (commit)
       via  68684b13e888b1be4aa9c2c5d47da85ac5351223 (commit)
       via  6ed9fdd840fc6619e40833d1421c6f6b9ee9816e (commit)
       via  5f3e4b86d1de231e5232dc73175538c5cbf48810 (commit)
       via  b7ab328e53c43560b3a661321e6b57e3ee6d6839 (commit)
      from  28bebc41e134c972860c6c17a42d69163de56212 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commitdiff 
http://git.netsurf-browser.org/libnslayout.git/commit/?id=c8e49af1cbd7d17b37f579bdb8d02bfcc6d982bb
commit c8e49af1cbd7d17b37f579bdb8d02bfcc6d982bb
Author: Michael Drake <[email protected]>
Commit: Michael Drake <[email protected]>

    dom watcher: Clean up listener cleanup.  Requires new LibDOM.

diff --git a/src/dom/watcher.c b/src/dom/watcher.c
index 6e35926..0788354 100644
--- a/src/dom/watcher.c
+++ b/src/dom/watcher.c
@@ -124,90 +124,63 @@ nslayout_error 
nsl_dom_watcher_add_for_layout(nslayout_layout *layout)
         *       LibDOM probably needs to gain Mutation Observer support.
         */
 
+       assert(layout->listener == NULL);
+
        exc = dom_event_listener_create(nsl__dom_event_handler,
                        layout, &layout->listener);
        if (exc != DOM_NO_ERR) {
-               goto fail_listener_create;
+               goto error;
        }
 
        exc = dom_event_target_add_event_listener(
                        layout->doc, nsl_dom_str_node_inserted,
                        layout->listener, false);
        if (exc != DOM_NO_ERR) {
-               goto fail_add_listener_node_inserted;
+               goto error;
        }
        exc = dom_event_target_add_event_listener(
                        layout->doc, nsl_dom_str_subtree_modified,
                        layout->listener, false);
        if (exc != DOM_NO_ERR) {
-               goto fail_add_listener_subtree_modified;
+               goto error;
        }
        exc = dom_event_target_add_event_listener(
                        layout->doc, nsl_dom_str_node_removed,
                        layout->listener, false);
        if (exc != DOM_NO_ERR) {
-               goto fail_add_listener_node_removed;
+               goto error;
        }
        exc = dom_event_target_add_event_listener(
                        layout->doc, nsl_dom_str_attr_modified,
                        layout->listener, false);
        if (exc != DOM_NO_ERR) {
-               goto fail_add_listener_attr_modified;
+               goto error;
        }
        exc = dom_event_target_add_event_listener(
                        layout->doc, nsl_dom_str_characterdata_modified,
                        layout->listener, false);
        if (exc != DOM_NO_ERR) {
-               goto fail_add_listener_characterdata_modified;
+               goto error;
        }
 
        return NSLAYOUT_OK;
 
-fail_add_listener_characterdata_modified:
-       (void) dom_event_target_remove_event_listener(
-                       layout->doc, nsl_dom_str_attr_modified,
-                       layout->listener, false);
-
-fail_add_listener_attr_modified:
-       (void) dom_event_target_remove_event_listener(
-                       layout->doc, nsl_dom_str_node_removed,
-                       layout->listener, false);
+error:
+       nsl_dom_watcher_remove_for_layout(layout);
 
-fail_add_listener_node_removed:
-       (void) dom_event_target_remove_event_listener(
-                       layout->doc, nsl_dom_str_subtree_modified,
-                       layout->listener, false);
-
-fail_add_listener_subtree_modified:
-       (void) dom_event_target_remove_event_listener(
-                       layout->doc, nsl_dom_str_node_inserted,
-                       layout->listener, false);
-
-fail_add_listener_node_inserted:
-       dom_event_listener_unref(layout->listener);
-       layout->listener = NULL;
-
-fail_listener_create:
        return NSL_DOM_ERR(exc);
 }
 
 /* Exported function, documented in src/dom/event.h */
 nslayout_error nsl_dom_watcher_remove_for_layout(nslayout_layout *layout)
 {
-       dom_exception exc1, exc2;
-
-       exc1 = dom_event_target_remove_event_listener(
-                       layout->doc, nsl_dom_str_node_inserted, 
-                       layout->listener, false);
-       exc2 = dom_event_target_remove_event_listener(
-                       layout->doc, nsl_dom_str_subtree_modified, 
-                       layout->listener, false);
+       dom_exception exc;
 
-       if (exc1 != DOM_NO_ERR) {
-               return NSL_DOM_ERR(exc1);
-       }
-       if (exc2 != DOM_NO_ERR) {
-               return NSL_DOM_ERR(exc2);
+       /* Passing NULL as type, removes listener for all event types. */
+       exc = dom_event_target_remove_event_listener(
+                       layout->doc, NULL, layout->listener, false);
+       if (exc != DOM_NO_ERR) {
+               return NSL_DOM_ERR(exc);
        }
 
        dom_event_listener_unref(layout->listener);


commitdiff 
http://git.netsurf-browser.org/libnslayout.git/commit/?id=46305b75b9a4ec8f0e4a93e3efb1b8e12ff2f390
commit 46305b75b9a4ec8f0e4a93e3efb1b8e12ff2f390
Author: Michael Drake <[email protected]>
Commit: Michael Drake <[email protected]>

    error: Improve error header.

diff --git a/include/libnslayout/error.h b/include/libnslayout/error.h
index 0e2321f..5e7b87a 100644
--- a/include/libnslayout/error.h
+++ b/include/libnslayout/error.h
@@ -17,25 +17,42 @@ extern "C"
 #endif
 
 /**
+ * Number of bits in an `nslayout_error` that indicate the source of the error.
+ */
+#define NSLAYOUT_ERROR_PROV 8
+
+/**
  * Libnslayout return codes
  *
  * NSLAYOUT_OK indicates no error.
  */
 typedef enum nslayout_error {
        /** No error code */
-       NSLAYOUT_OK                             = 0,
+       NSLAYOUT_OK            = 0,
 
-       /** Error provenance */
-       NSLAYOUT_NSLAYOUT                       = (1 << 0),
-       NSLAYOUT_LIBDOM                         = (1 << 1),
-       NSLAYOUT_LIBCSS                         = (1 << 2),
+       /** Error provenance (bits 0..7) */
+       NSLAYOUT_NSLAYOUT      = (1 << 0),
+       NSLAYOUT_LIBDOM        = (1 << 1),
+       NSLAYOUT_LIBCSS        = (1 << 2),
 
-       /** LibNSLayout errors */
-       NSLAYOUT_NO_MEM                         = (1 << 8) + NSLAYOUT_NSLAYOUT,
+       /** LibNSLayout errors (bits 8..31) */
+       NSLAYOUT_NO_MEM        = (1 << NSLAYOUT_ERROR_PROV) | NSLAYOUT_NSLAYOUT,
 } nslayout_error;
 
 
 /**
+ * Get error provenance.
+ *
+ * \param[in]  err             Error code to test
+ * \return error provenance
+ */
+static inline nslayout_error nslayout_error_provenance(nslayout_error err)
+{
+       return err & ((1 << NSLAYOUT_ERROR_PROV) - 1);
+}
+
+
+/**
  * Check if error is from libnslayout
  *
  * \param[in]  err             Error code to test


commitdiff 
http://git.netsurf-browser.org/libnslayout.git/commit/?id=68684b13e888b1be4aa9c2c5d47da85ac5351223
commit 68684b13e888b1be4aa9c2c5d47da85ac5351223
Author: Michael Drake <[email protected]>
Commit: Michael Drake <[email protected]>

    util dom-str: Ensure correct propagation of dom string create error.

diff --git a/src/util/dom-str.c b/src/util/dom-str.c
index c108620..73bfe63 100644
--- a/src/util/dom-str.c
+++ b/src/util/dom-str.c
@@ -62,8 +62,7 @@ out:
        if (exc != DOM_NO_ERR) {
                printf("Failed to initialise dom_str!\n");
                nsl_dom_str_fini();
-               /* TODO: return value */
-               err = NSLAYOUT_NO_MEM;
+               err = NSL_DOM_ERR(exc);
        }
 
        return err;


commitdiff 
http://git.netsurf-browser.org/libnslayout.git/commit/?id=6ed9fdd840fc6619e40833d1421c6f6b9ee9816e
commit 6ed9fdd840fc6619e40833d1421c6f6b9ee9816e
Author: Michael Drake <[email protected]>
Commit: Michael Drake <[email protected]>

    util dom-str: Remove unnecessary include.

diff --git a/src/util/dom-str.c b/src/util/dom-str.c
index 2e7845a..c108620 100644
--- a/src/util/dom-str.c
+++ b/src/util/dom-str.c
@@ -8,7 +8,6 @@
  * Layout object handling
  */
 
-#include <stdlib.h>
 #include <stdio.h>
 
 #include "util/dom-str.h"


commitdiff 
http://git.netsurf-browser.org/libnslayout.git/commit/?id=5f3e4b86d1de231e5232dc73175538c5cbf48810
commit 5f3e4b86d1de231e5232dc73175538c5cbf48810
Author: Michael Drake <[email protected]>
Commit: Michael Drake <[email protected]>

    util dom-str: Finalise: clean up new dom strings.

diff --git a/src/util/dom-str.c b/src/util/dom-str.c
index b1e62a3..2e7845a 100644
--- a/src/util/dom-str.c
+++ b/src/util/dom-str.c
@@ -75,7 +75,10 @@ out:
 nslayout_error nsl_dom_str_fini(void)
 {
        dom_string_unref(nsl_dom_str_node_inserted);
+       dom_string_unref(nsl_dom_str_node_removed);
        dom_string_unref(nsl_dom_str_subtree_modified);
+       dom_string_unref(nsl_dom_str_attr_modified);
+       dom_string_unref(nsl_dom_str_characterdata_modified);
 
        return NSLAYOUT_OK;
 }


commitdiff 
http://git.netsurf-browser.org/libnslayout.git/commit/?id=b7ab328e53c43560b3a661321e6b57e3ee6d6839
commit b7ab328e53c43560b3a661321e6b57e3ee6d6839
Author: Michael Drake <[email protected]>
Commit: Michael Drake <[email protected]>

    util dom-str: Clean up dom strings on failure.

diff --git a/src/util/dom-str.c b/src/util/dom-str.c
index 03fdd9e..b1e62a3 100644
--- a/src/util/dom-str.c
+++ b/src/util/dom-str.c
@@ -24,50 +24,50 @@ dom_string *nsl_dom_str_characterdata_modified;
 /* Exported function, documented in src/util/dom-str.h */
 nslayout_error nsl_dom_str_init(void)
 {
+       nslayout_error err;
        dom_exception exc;
 
        exc = dom_string_create((const uint8_t *)"DOMNodeInserted",
                        SLEN("DOMNodeInserted"),
                        &nsl_dom_str_node_inserted);
        if (exc != DOM_NO_ERR) {
-               /* TODO: free stuff, return value */
-               printf("Failed to create string!\n");
-               return NSLAYOUT_NO_MEM;
+               goto out;
        }
        exc = dom_string_create((const uint8_t *)"DOMNodeRemoved",
                        SLEN("DOMNodeRemoved"),
                        &nsl_dom_str_node_removed);
        if (exc != DOM_NO_ERR) {
-               /* TODO: free stuff, return value */
-               printf("Failed to create string!\n");
-               return NSLAYOUT_NO_MEM;
+               goto out;
        }
        exc = dom_string_create((const uint8_t *)"DOMSubtreeModified",
                        SLEN("DOMSubtreeModified"),
                        &nsl_dom_str_subtree_modified);
        if (exc != DOM_NO_ERR) {
-               /* TODO: free stuff, return value */
-               printf("Failed to create string!\n");
-               return NSLAYOUT_NO_MEM;
+               goto out;
        }
        exc = dom_string_create((const uint8_t *)"DOMAttrModified",
                        SLEN("DOMAttrModified"),
                        &nsl_dom_str_attr_modified);
        if (exc != DOM_NO_ERR) {
-               /* TODO: free stuff, return value */
-               printf("Failed to create string!\n");
-               return NSLAYOUT_NO_MEM;
+               goto out;
        }
        exc = dom_string_create((const uint8_t *)"DOMCharacterDataModified",
                        SLEN("DOMCharacterDataModified"),
                        &nsl_dom_str_characterdata_modified);
        if (exc != DOM_NO_ERR) {
-               /* TODO: free stuff, return value */
-               printf("Failed to create string!\n");
-               return NSLAYOUT_NO_MEM;
+               goto out;
        }
 
-       return NSLAYOUT_OK;
+       err = NSLAYOUT_OK;
+out:
+       if (exc != DOM_NO_ERR) {
+               printf("Failed to initialise dom_str!\n");
+               nsl_dom_str_fini();
+               /* TODO: return value */
+               err = NSLAYOUT_NO_MEM;
+       }
+
+       return err;
 }
 
 


-----------------------------------------------------------------------

Summary of changes:
 include/libnslayout/error.h |   31 ++++++++++++++++++-----
 src/dom/watcher.c           |   59 ++++++++++++-------------------------------
 src/util/dom-str.c          |   35 ++++++++++++-------------
 3 files changed, 58 insertions(+), 67 deletions(-)

diff --git a/include/libnslayout/error.h b/include/libnslayout/error.h
index 0e2321f..5e7b87a 100644
--- a/include/libnslayout/error.h
+++ b/include/libnslayout/error.h
@@ -17,25 +17,42 @@ extern "C"
 #endif
 
 /**
+ * Number of bits in an `nslayout_error` that indicate the source of the error.
+ */
+#define NSLAYOUT_ERROR_PROV 8
+
+/**
  * Libnslayout return codes
  *
  * NSLAYOUT_OK indicates no error.
  */
 typedef enum nslayout_error {
        /** No error code */
-       NSLAYOUT_OK                             = 0,
+       NSLAYOUT_OK            = 0,
 
-       /** Error provenance */
-       NSLAYOUT_NSLAYOUT                       = (1 << 0),
-       NSLAYOUT_LIBDOM                         = (1 << 1),
-       NSLAYOUT_LIBCSS                         = (1 << 2),
+       /** Error provenance (bits 0..7) */
+       NSLAYOUT_NSLAYOUT      = (1 << 0),
+       NSLAYOUT_LIBDOM        = (1 << 1),
+       NSLAYOUT_LIBCSS        = (1 << 2),
 
-       /** LibNSLayout errors */
-       NSLAYOUT_NO_MEM                         = (1 << 8) + NSLAYOUT_NSLAYOUT,
+       /** LibNSLayout errors (bits 8..31) */
+       NSLAYOUT_NO_MEM        = (1 << NSLAYOUT_ERROR_PROV) | NSLAYOUT_NSLAYOUT,
 } nslayout_error;
 
 
 /**
+ * Get error provenance.
+ *
+ * \param[in]  err             Error code to test
+ * \return error provenance
+ */
+static inline nslayout_error nslayout_error_provenance(nslayout_error err)
+{
+       return err & ((1 << NSLAYOUT_ERROR_PROV) - 1);
+}
+
+
+/**
  * Check if error is from libnslayout
  *
  * \param[in]  err             Error code to test
diff --git a/src/dom/watcher.c b/src/dom/watcher.c
index 6e35926..0788354 100644
--- a/src/dom/watcher.c
+++ b/src/dom/watcher.c
@@ -124,90 +124,63 @@ nslayout_error 
nsl_dom_watcher_add_for_layout(nslayout_layout *layout)
         *       LibDOM probably needs to gain Mutation Observer support.
         */
 
+       assert(layout->listener == NULL);
+
        exc = dom_event_listener_create(nsl__dom_event_handler,
                        layout, &layout->listener);
        if (exc != DOM_NO_ERR) {
-               goto fail_listener_create;
+               goto error;
        }
 
        exc = dom_event_target_add_event_listener(
                        layout->doc, nsl_dom_str_node_inserted,
                        layout->listener, false);
        if (exc != DOM_NO_ERR) {
-               goto fail_add_listener_node_inserted;
+               goto error;
        }
        exc = dom_event_target_add_event_listener(
                        layout->doc, nsl_dom_str_subtree_modified,
                        layout->listener, false);
        if (exc != DOM_NO_ERR) {
-               goto fail_add_listener_subtree_modified;
+               goto error;
        }
        exc = dom_event_target_add_event_listener(
                        layout->doc, nsl_dom_str_node_removed,
                        layout->listener, false);
        if (exc != DOM_NO_ERR) {
-               goto fail_add_listener_node_removed;
+               goto error;
        }
        exc = dom_event_target_add_event_listener(
                        layout->doc, nsl_dom_str_attr_modified,
                        layout->listener, false);
        if (exc != DOM_NO_ERR) {
-               goto fail_add_listener_attr_modified;
+               goto error;
        }
        exc = dom_event_target_add_event_listener(
                        layout->doc, nsl_dom_str_characterdata_modified,
                        layout->listener, false);
        if (exc != DOM_NO_ERR) {
-               goto fail_add_listener_characterdata_modified;
+               goto error;
        }
 
        return NSLAYOUT_OK;
 
-fail_add_listener_characterdata_modified:
-       (void) dom_event_target_remove_event_listener(
-                       layout->doc, nsl_dom_str_attr_modified,
-                       layout->listener, false);
-
-fail_add_listener_attr_modified:
-       (void) dom_event_target_remove_event_listener(
-                       layout->doc, nsl_dom_str_node_removed,
-                       layout->listener, false);
+error:
+       nsl_dom_watcher_remove_for_layout(layout);
 
-fail_add_listener_node_removed:
-       (void) dom_event_target_remove_event_listener(
-                       layout->doc, nsl_dom_str_subtree_modified,
-                       layout->listener, false);
-
-fail_add_listener_subtree_modified:
-       (void) dom_event_target_remove_event_listener(
-                       layout->doc, nsl_dom_str_node_inserted,
-                       layout->listener, false);
-
-fail_add_listener_node_inserted:
-       dom_event_listener_unref(layout->listener);
-       layout->listener = NULL;
-
-fail_listener_create:
        return NSL_DOM_ERR(exc);
 }
 
 /* Exported function, documented in src/dom/event.h */
 nslayout_error nsl_dom_watcher_remove_for_layout(nslayout_layout *layout)
 {
-       dom_exception exc1, exc2;
-
-       exc1 = dom_event_target_remove_event_listener(
-                       layout->doc, nsl_dom_str_node_inserted, 
-                       layout->listener, false);
-       exc2 = dom_event_target_remove_event_listener(
-                       layout->doc, nsl_dom_str_subtree_modified, 
-                       layout->listener, false);
+       dom_exception exc;
 
-       if (exc1 != DOM_NO_ERR) {
-               return NSL_DOM_ERR(exc1);
-       }
-       if (exc2 != DOM_NO_ERR) {
-               return NSL_DOM_ERR(exc2);
+       /* Passing NULL as type, removes listener for all event types. */
+       exc = dom_event_target_remove_event_listener(
+                       layout->doc, NULL, layout->listener, false);
+       if (exc != DOM_NO_ERR) {
+               return NSL_DOM_ERR(exc);
        }
 
        dom_event_listener_unref(layout->listener);
diff --git a/src/util/dom-str.c b/src/util/dom-str.c
index 03fdd9e..73bfe63 100644
--- a/src/util/dom-str.c
+++ b/src/util/dom-str.c
@@ -8,7 +8,6 @@
  * Layout object handling
  */
 
-#include <stdlib.h>
 #include <stdio.h>
 
 #include "util/dom-str.h"
@@ -24,50 +23,49 @@ dom_string *nsl_dom_str_characterdata_modified;
 /* Exported function, documented in src/util/dom-str.h */
 nslayout_error nsl_dom_str_init(void)
 {
+       nslayout_error err;
        dom_exception exc;
 
        exc = dom_string_create((const uint8_t *)"DOMNodeInserted",
                        SLEN("DOMNodeInserted"),
                        &nsl_dom_str_node_inserted);
        if (exc != DOM_NO_ERR) {
-               /* TODO: free stuff, return value */
-               printf("Failed to create string!\n");
-               return NSLAYOUT_NO_MEM;
+               goto out;
        }
        exc = dom_string_create((const uint8_t *)"DOMNodeRemoved",
                        SLEN("DOMNodeRemoved"),
                        &nsl_dom_str_node_removed);
        if (exc != DOM_NO_ERR) {
-               /* TODO: free stuff, return value */
-               printf("Failed to create string!\n");
-               return NSLAYOUT_NO_MEM;
+               goto out;
        }
        exc = dom_string_create((const uint8_t *)"DOMSubtreeModified",
                        SLEN("DOMSubtreeModified"),
                        &nsl_dom_str_subtree_modified);
        if (exc != DOM_NO_ERR) {
-               /* TODO: free stuff, return value */
-               printf("Failed to create string!\n");
-               return NSLAYOUT_NO_MEM;
+               goto out;
        }
        exc = dom_string_create((const uint8_t *)"DOMAttrModified",
                        SLEN("DOMAttrModified"),
                        &nsl_dom_str_attr_modified);
        if (exc != DOM_NO_ERR) {
-               /* TODO: free stuff, return value */
-               printf("Failed to create string!\n");
-               return NSLAYOUT_NO_MEM;
+               goto out;
        }
        exc = dom_string_create((const uint8_t *)"DOMCharacterDataModified",
                        SLEN("DOMCharacterDataModified"),
                        &nsl_dom_str_characterdata_modified);
        if (exc != DOM_NO_ERR) {
-               /* TODO: free stuff, return value */
-               printf("Failed to create string!\n");
-               return NSLAYOUT_NO_MEM;
+               goto out;
        }
 
-       return NSLAYOUT_OK;
+       err = NSLAYOUT_OK;
+out:
+       if (exc != DOM_NO_ERR) {
+               printf("Failed to initialise dom_str!\n");
+               nsl_dom_str_fini();
+               err = NSL_DOM_ERR(exc);
+       }
+
+       return err;
 }
 
 
@@ -75,7 +73,10 @@ nslayout_error nsl_dom_str_init(void)
 nslayout_error nsl_dom_str_fini(void)
 {
        dom_string_unref(nsl_dom_str_node_inserted);
+       dom_string_unref(nsl_dom_str_node_removed);
        dom_string_unref(nsl_dom_str_subtree_modified);
+       dom_string_unref(nsl_dom_str_attr_modified);
+       dom_string_unref(nsl_dom_str_characterdata_modified);
 
        return NSLAYOUT_OK;
 }


-- 
NetSurf Layout Engine

_______________________________________________
netsurf-commits mailing list
[email protected]
http://listmaster.pepperfish.net/cgi-bin/mailman/listinfo/netsurf-commits-netsurf-browser.org

Reply via email to