summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Catanzaro <mcatanzaro@gnome.org>2020-10-29 14:21:19 -0500
committerShaun McCance <shaunm@gnome.org>2020-11-21 10:39:52 -0500
commitc5586172144d1e31880438a9711e3e686a2ed40d (patch)
tree6e4cd1ecd9c84318ae6cd5c4bff896bee8277c27
parentb4d3a1ab67ca14c48df36d88a688cc976fd250f5 (diff)
downloadyelp-c5586172144d1e31880438a9711e3e686a2ed40d.tar.gz
mallard-document: fix crash when reloading document
libxml memory management is quite uncleary, but I believe priv->cache has ownership of priv->mallard_ns, so the later is invalidated when the former is freed. We need to recreate it here. Reportedly fixes #122 for Shaun. (I was still seeing another crash, but it's probably a separate issue.)
-rw-r--r--libyelp/yelp-mallard-document.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/libyelp/yelp-mallard-document.c b/libyelp/yelp-mallard-document.c
index f417a361..6a5b643c 100644
--- a/libyelp/yelp-mallard-document.c
+++ b/libyelp/yelp-mallard-document.c
@@ -1168,6 +1168,7 @@ mallard_monitor_changed (GFileMonitor *monitor,
xmlFreeDoc (priv->cache);
priv->cache = xmlNewDoc (BAD_CAST "1.0");
priv->cache_ns = xmlNewNs (NULL, CACHE_NS, BAD_CAST "cache");
+ priv->mallard_ns = xmlNewNs (NULL, MALLARD_NS, BAD_CAST "mal");
cur = xmlNewDocNode (priv->cache, priv->cache_ns, BAD_CAST "cache", NULL);
xmlDocSetRootElement (priv->cache, cur);
priv->cache_ns->next = priv->mallard_ns;