summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--src/yelp-db-pager.c7
-rw-r--r--src/yelp-toc-pager.c10
-rw-r--r--src/yelp-window.c2
-rw-r--r--src/yelp-xslt-pager.c14
5 files changed, 29 insertions, 12 deletions
diff --git a/ChangeLog b/ChangeLog
index 0a89a61e..8e13404d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2005-08-19 Shaun McCance <shaunm@gnome.org>
+
+ * src/yelp-db-pager.c:
+ * src/yelp-toc-pager.c:
+ * src/yelp-window.c:
+ * src/yelp-xslt-pager.c:
+ - Patch from Don Scorgie to fix crash, #172227
+
2005-07-25 Ross Burton <ross@burtonini.com>
* src/yelp-db-pager.c:
diff --git a/src/yelp-db-pager.c b/src/yelp-db-pager.c
index 7798dc50..fa044791 100644
--- a/src/yelp-db-pager.c
+++ b/src/yelp-db-pager.c
@@ -277,10 +277,13 @@ db_pager_parse (YelpPager *pager)
walker_walk_xml (walker);
done:
- xsltFreeStylesheet (walker->titleStylesheet);
+ if (walker) {
+ if (walker->titleStylesheet)
+ xsltFreeStylesheet (walker->titleStylesheet);
+ g_free (walker);
+ }
g_free (filename);
- g_free (walker);
if (parserCtxt)
xmlFreeParserCtxt (parserCtxt);
diff --git a/src/yelp-toc-pager.c b/src/yelp-toc-pager.c
index 4e1aced5..711298ae 100644
--- a/src/yelp-toc-pager.c
+++ b/src/yelp-toc-pager.c
@@ -871,7 +871,7 @@ process_xslt (YelpTocPager *pager)
GError *error = NULL;
xmlDocPtr outdoc;
YelpTocPagerPriv *priv = pager->priv;
- gchar **params;
+ gchar **params = NULL;
gint params_i = 0;
gint params_max = 10;
GtkIconInfo *info;
@@ -925,9 +925,11 @@ process_xslt (YelpTocPager *pager)
g_signal_emit_by_name (pager, "finish");
done:
- for (params_i = 0; params[params_i] != NULL; params_i++)
- if (params_i % 2 == 1)
- g_free ((gchar *) params[params_i]);
+ if (params) {
+ for (params_i = 0; params[params_i] != NULL; params_i++)
+ if (params_i % 2 == 1)
+ g_free ((gchar *) params[params_i]);
+ }
if (outdoc)
xmlFreeDoc (outdoc);
if (priv->toc_doc) {
diff --git a/src/yelp-window.c b/src/yelp-window.c
index 4e672303..9783b4a4 100644
--- a/src/yelp-window.c
+++ b/src/yelp-window.c
@@ -584,6 +584,8 @@ history_step_back (YelpWindow *window)
priv->current_doc = yelp_doc_info_ref (entry->doc_info);
priv->current_frag = g_strdup (entry->frag_id);
history_entry_free (entry);
+ } else {
+ yelp_window_load (window, "x-yelp-toc:");
}
}
diff --git a/src/yelp-xslt-pager.c b/src/yelp-xslt-pager.c
index b6e5475a..01eac790 100644
--- a/src/yelp-xslt-pager.c
+++ b/src/yelp-xslt-pager.c
@@ -161,9 +161,9 @@ xslt_pager_process (YelpPager *pager)
YelpXsltPagerClass *klass;
YelpDocInfo *doc_info;
- gchar *filename;
+ gchar *filename = NULL;
- gchar **params;
+ gchar **params = NULL;
gint params_i = 0;
GError *error = NULL;
@@ -257,10 +257,12 @@ xslt_pager_process (YelpPager *pager)
g_signal_emit_by_name (pager, "finish");
done:
- for (params_i = 0; params[params_i] != NULL; params_i++)
- if (params_i % 2 == 1)
- g_free (params[params_i]);
- g_free (params);
+ if (params) {
+ for (params_i = 0; params[params_i] != NULL; params_i++)
+ if (params_i % 2 == 1)
+ g_free (params[params_i]);
+ g_free (params);
+ }
g_free (filename);
if (priv->inputDoc) {