Always NULL-check database before using it
If the database is broken in whatever way the pointer is unset. A good next step would be to give more user-friendly feedback than the current rough dialog.
This commit is contained in:
parent
5f9497358c
commit
e4d4ec26fb
5 changed files with 38 additions and 10 deletions
|
@ -426,13 +426,11 @@ midori_history_initialize (KatzeArray* array,
|
||||||
char** errmsg)
|
char** errmsg)
|
||||||
{
|
{
|
||||||
sqlite3* db;
|
sqlite3* db;
|
||||||
gboolean has_day;
|
gboolean has_day = FALSE;
|
||||||
sqlite3_stmt* stmt;
|
sqlite3_stmt* stmt;
|
||||||
gint result;
|
gint result;
|
||||||
gchar* sql;
|
gchar* sql;
|
||||||
|
|
||||||
has_day = FALSE;
|
|
||||||
|
|
||||||
if (sqlite3_open (filename, &db) != SQLITE_OK)
|
if (sqlite3_open (filename, &db) != SQLITE_OK)
|
||||||
{
|
{
|
||||||
if (errmsg)
|
if (errmsg)
|
||||||
|
@ -2348,7 +2346,7 @@ main (int argc,
|
||||||
{
|
{
|
||||||
g_string_append_printf (error_messages,
|
g_string_append_printf (error_messages,
|
||||||
_("Bookmarks couldn't be loaded: %s\n"), errmsg);
|
_("Bookmarks couldn't be loaded: %s\n"), errmsg);
|
||||||
g_free (errmsg);
|
errmsg = NULL;
|
||||||
}
|
}
|
||||||
else if (!bookmarks_exist)
|
else if (!bookmarks_exist)
|
||||||
{
|
{
|
||||||
|
@ -2409,7 +2407,7 @@ main (int argc,
|
||||||
{
|
{
|
||||||
g_string_append_printf (error_messages,
|
g_string_append_printf (error_messages,
|
||||||
_("The history couldn't be loaded: %s\n"), errmsg);
|
_("The history couldn't be loaded: %s\n"), errmsg);
|
||||||
g_free (errmsg);
|
errmsg = NULL;
|
||||||
}
|
}
|
||||||
g_free (bookmarks_file);
|
g_free (bookmarks_file);
|
||||||
midori_startup_timer ("History read: \t%f");
|
midori_startup_timer ("History read: \t%f");
|
||||||
|
|
|
@ -714,6 +714,9 @@ midori_browser_edit_bookmark_dialog_new (MidoriBrowser* browser,
|
||||||
|
|
||||||
db = g_object_get_data (G_OBJECT (browser->bookmarks), "db");
|
db = g_object_get_data (G_OBJECT (browser->bookmarks), "db");
|
||||||
|
|
||||||
|
if (!db)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
if (is_folder)
|
if (is_folder)
|
||||||
title = new_bookmark ? _("New folder") : _("Edit folder");
|
title = new_bookmark ? _("New folder") : _("Edit folder");
|
||||||
else
|
else
|
||||||
|
|
|
@ -364,6 +364,10 @@ midori_location_action_popup_timeout_cb (gpointer data)
|
||||||
{
|
{
|
||||||
sqlite3* db;
|
sqlite3* db;
|
||||||
db = g_object_get_data (G_OBJECT (action->history), "db");
|
db = g_object_get_data (G_OBJECT (action->history), "db");
|
||||||
|
|
||||||
|
if (!db)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
sqlcmd = "SELECT type, uri, title FROM ("
|
sqlcmd = "SELECT type, uri, title FROM ("
|
||||||
" SELECT 1 AS type, uri, title, count() AS ct FROM history "
|
" SELECT 1 AS type, uri, title, count() AS ct FROM history "
|
||||||
" WHERE uri LIKE ?1 OR title LIKE ?1 GROUP BY uri "
|
" WHERE uri LIKE ?1 OR title LIKE ?1 GROUP BY uri "
|
||||||
|
|
|
@ -133,6 +133,9 @@ midori_bookmarks_export_array_db (sqlite3* db,
|
||||||
KatzeItem* item;
|
KatzeItem* item;
|
||||||
GList* list;
|
GList* list;
|
||||||
|
|
||||||
|
if (!db)
|
||||||
|
return;
|
||||||
|
|
||||||
sqlcmd = g_strdup_printf ("SELECT * FROM bookmarks where folder='%s'", folder);
|
sqlcmd = g_strdup_printf ("SELECT * FROM bookmarks where folder='%s'", folder);
|
||||||
root_array = katze_array_from_sqlite (db, sqlcmd);
|
root_array = katze_array_from_sqlite (db, sqlcmd);
|
||||||
g_free (sqlcmd);
|
g_free (sqlcmd);
|
||||||
|
@ -160,6 +163,9 @@ midori_bookmarks_import_array_db (sqlite3* db,
|
||||||
GList* list;
|
GList* list;
|
||||||
KatzeItem* item;
|
KatzeItem* item;
|
||||||
|
|
||||||
|
if (!db)
|
||||||
|
return;
|
||||||
|
|
||||||
KATZE_ARRAY_FOREACH_ITEM_L (item, array, list)
|
KATZE_ARRAY_FOREACH_ITEM_L (item, array, list)
|
||||||
{
|
{
|
||||||
if (KATZE_IS_ARRAY (item))
|
if (KATZE_IS_ARRAY (item))
|
||||||
|
@ -181,6 +187,9 @@ midori_bookmarks_read_from_db (MidoriBookmarks* bookmarks,
|
||||||
|
|
||||||
db = g_object_get_data (G_OBJECT (bookmarks->array), "db");
|
db = g_object_get_data (G_OBJECT (bookmarks->array), "db");
|
||||||
|
|
||||||
|
if (!db)
|
||||||
|
return katze_array_new (KATZE_TYPE_ITEM);
|
||||||
|
|
||||||
if (keyword && *keyword)
|
if (keyword && *keyword)
|
||||||
{
|
{
|
||||||
gchar* filterstr;
|
gchar* filterstr;
|
||||||
|
@ -202,7 +211,7 @@ midori_bookmarks_read_from_db (MidoriBookmarks* bookmarks,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (result != SQLITE_OK)
|
if (result != SQLITE_OK)
|
||||||
return NULL;
|
return katze_array_new (KATZE_TYPE_ITEM);
|
||||||
|
|
||||||
return katze_array_from_statement (statement);
|
return katze_array_from_statement (statement);
|
||||||
}
|
}
|
||||||
|
@ -248,6 +257,9 @@ midori_bookmarks_insert_item_db (sqlite3* db,
|
||||||
/* Bookmarks must have a name, import may produce invalid items */
|
/* Bookmarks must have a name, import may produce invalid items */
|
||||||
g_return_if_fail (katze_item_get_name (item));
|
g_return_if_fail (katze_item_get_name (item));
|
||||||
|
|
||||||
|
if (!db)
|
||||||
|
return;
|
||||||
|
|
||||||
if (KATZE_ITEM_IS_BOOKMARK (item))
|
if (KATZE_ITEM_IS_BOOKMARK (item))
|
||||||
uri = g_strdup (katze_item_get_uri (item));
|
uri = g_strdup (katze_item_get_uri (item));
|
||||||
else
|
else
|
||||||
|
|
|
@ -174,6 +174,9 @@ midori_history_remove_item_from_db (MidoriHistory* history,
|
||||||
|
|
||||||
db = g_object_get_data (G_OBJECT (history->array), "db");
|
db = g_object_get_data (G_OBJECT (history->array), "db");
|
||||||
|
|
||||||
|
if (!db)
|
||||||
|
return;
|
||||||
|
|
||||||
if (KATZE_ITEM_IS_BOOKMARK (item))
|
if (KATZE_ITEM_IS_BOOKMARK (item))
|
||||||
sqlcmd = sqlite3_mprintf (
|
sqlcmd = sqlite3_mprintf (
|
||||||
"DELETE FROM history WHERE uri = '%q' AND"
|
"DELETE FROM history WHERE uri = '%q' AND"
|
||||||
|
@ -217,6 +220,9 @@ midori_history_read_from_db (MidoriHistory* history,
|
||||||
|
|
||||||
db = g_object_get_data (G_OBJECT (history->array), "db");
|
db = g_object_get_data (G_OBJECT (history->array), "db");
|
||||||
|
|
||||||
|
if (!db)
|
||||||
|
return katze_array_new (KATZE_TYPE_ITEM);
|
||||||
|
|
||||||
if (filter && *filter)
|
if (filter && *filter)
|
||||||
{
|
{
|
||||||
gchar* filterstr;
|
gchar* filterstr;
|
||||||
|
@ -249,7 +255,7 @@ midori_history_read_from_db (MidoriHistory* history,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (result != SQLITE_OK)
|
if (result != SQLITE_OK)
|
||||||
return NULL;
|
return katze_array_new (KATZE_TYPE_ITEM);
|
||||||
|
|
||||||
return katze_array_from_statement (statement);
|
return katze_array_from_statement (statement);
|
||||||
}
|
}
|
||||||
|
@ -327,7 +333,7 @@ midori_history_bookmark_add_cb (GtkWidget* menuitem,
|
||||||
{
|
{
|
||||||
GtkTreeModel* model;
|
GtkTreeModel* model;
|
||||||
GtkTreeIter iter;
|
GtkTreeIter iter;
|
||||||
KatzeItem* item;
|
KatzeItem* item = NULL;
|
||||||
|
|
||||||
MidoriBrowser* browser = midori_browser_get_for_widget (GTK_WIDGET (history));
|
MidoriBrowser* browser = midori_browser_get_for_widget (GTK_WIDGET (history));
|
||||||
if (katze_tree_view_get_selected_iter (GTK_TREE_VIEW (history->treeview),
|
if (katze_tree_view_get_selected_iter (GTK_TREE_VIEW (history->treeview),
|
||||||
|
@ -335,11 +341,12 @@ midori_history_bookmark_add_cb (GtkWidget* menuitem,
|
||||||
gtk_tree_model_get (model, &iter, 0, &item, -1);
|
gtk_tree_model_get (model, &iter, 0, &item, -1);
|
||||||
|
|
||||||
if (KATZE_IS_ITEM (item) && katze_item_get_uri (item))
|
if (KATZE_IS_ITEM (item) && katze_item_get_uri (item))
|
||||||
|
{
|
||||||
midori_browser_edit_bookmark_dialog_new (browser, item, TRUE, FALSE);
|
midori_browser_edit_bookmark_dialog_new (browser, item, TRUE, FALSE);
|
||||||
|
g_object_unref (item);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
midori_browser_edit_bookmark_dialog_new (browser, NULL, TRUE, FALSE);
|
midori_browser_edit_bookmark_dialog_new (browser, NULL, TRUE, FALSE);
|
||||||
|
|
||||||
g_object_unref (item);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static GtkWidget*
|
static GtkWidget*
|
||||||
|
@ -674,6 +681,10 @@ midori_history_open_in_tab_activate_cb (GtkWidget* menuitem,
|
||||||
KatzeArray* array;
|
KatzeArray* array;
|
||||||
|
|
||||||
db = g_object_get_data (G_OBJECT (history->array), "db");
|
db = g_object_get_data (G_OBJECT (history->array), "db");
|
||||||
|
|
||||||
|
if (!db)
|
||||||
|
return;
|
||||||
|
|
||||||
sqlcmd = g_strdup_printf ("SELECT uri, title, date, day "
|
sqlcmd = g_strdup_printf ("SELECT uri, title, date, day "
|
||||||
"FROM history WHERE day = %d "
|
"FROM history WHERE day = %d "
|
||||||
"GROUP BY uri ORDER BY date ASC",
|
"GROUP BY uri ORDER BY date ASC",
|
||||||
|
|
Loading…
Reference in a new issue