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-10 11:44:54 -0500
commit2f57360b01aa72c43c6f3242b5c0d1810b9a193b (patch)
treee7c5fc365595b02a3e1b31a176390d0bdff3f6bd
parent31f5dc15af8d1dc69d556a870a0b21d95520d7f8 (diff)
downloadyelp-2f57360b01aa72c43c6f3242b5c0d1810b9a193b.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;