Commit 5d576436 authored by Yuanle Song's avatar Yuanle Song
Browse files

v0.3.2 add some error handling code when init sqlite db.

make code compile in release mode. no unused variable.
parent fac7fe86
Loading
Loading
Loading
Loading
+22 −8
Original line number Diff line number Diff line
@@ -215,28 +215,42 @@ static void
config_db (AppData* appdata)
{
	gint ri = 0;
	gboolean r = FALSE;
	gboolean rb = FALSE;
	static const char* SQLITE3_MEMORY_DB = ":memory:";
	sqlite3* db = NULL;
	gchar* sql = NULL;
	ri = sqlite3_open (SQLITE3_MEMORY_DB, &db);
	g_assert_cmpint (ri, ==, SQLITE_OK);
	if (ri != SQLITE_OK) {
		g_warning ("sqlite3_open :memory: db failed, query will not work.");
		goto db_fail;
	}
	g_assert_nonnull (db);

	/* TODO make db path configurable */
	/* TODO remove user name in db path */
	sql = sqlite3_mprintf ("ATTACH %Q AS maindb", "/home/sylecn/.cache/ibus/pinyin/main.db");
	r = sqlite3_exec_simple (db, sql);
	g_assert (r);
	rb = sqlite3_exec_simple (db, sql);
	if (! rb) {
		g_warning ("attach maindb failed, query will not work.");
		goto attach_fail;
	}
	sqlite3_free (sql);

	/* TODO make db path configurable */
	sql = sqlite3_mprintf ("ATTACH %Q AS userdb", "/home/sylecn/.cache/ibus/pinyin/user-1.0.db");
	r = sqlite3_exec_simple (db, sql);
	g_assert (r);
	sqlite3_free (sql);

	rb = sqlite3_exec_simple (db, sql);
	if (! rb) {
		g_warning ("attach userdb failed, query will not work.");
		goto attach_fail;
	}
	appdata->db = db;
	return;

attach_fail:
	sqlite3_free (sql);
	sqlite3_close (db);
db_fail:
	appdata->db = NULL;
}

static void
+1 −1
Original line number Diff line number Diff line
# -*- mode: conf -*-
project('zero-pinyin-service', ['c', 'cpp'],
  version: '0.3.1',
  version: '0.3.2',
  license: 'GPL',
  default_options: [
    'warning_level=2',
+5 −0
Original line number Diff line number Diff line
@@ -129,6 +129,7 @@ get_candidates_for_n_pinyin (sqlite3* db,
	const guint DEFAULT_LIMIT = 50;
	GList* result = NULL;	/* GList of Candidate */

	g_assert_nonnull (db);
	g_assert_cmpint (group_size, >=, 1);
	g_assert_cmpint (group_size, <=, g_list_length (pylist));

@@ -201,6 +202,10 @@ get_candidates (sqlite3* db,
		GVariantBuilder *candidates_builder,
		GVariantBuilder *matched_lengths_builder)
{
	if (! db) {
		g_warning ("No db connection, can't get candidates.");
		return;
	}
	GList* pylist = NULL;
	guint pylist_len = 0;