diff options
author | Michael Catanzaro <mcatanzaro@gnome.org> | 2020-10-29 14:21:19 -0500 |
---|---|---|
committer | Shaun McCance <shaunm@gnome.org> | 2020-11-10 11:44:54 -0500 |
commit | 2f57360b01aa72c43c6f3242b5c0d1810b9a193b (patch) | |
tree | e7c5fc365595b02a3e1b31a176390d0bdff3f6bd | |
parent | 31f5dc15af8d1dc69d556a870a0b21d95520d7f8 (diff) | |
download | yelp-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.c | 1 |
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; |