aboutsummaryrefslogtreecommitdiff
path: root/plugins/omemo/src/plugin.vala
diff options
context:
space:
mode:
authorMarvin W <git@larma.de>2017-04-18 17:55:20 +0200
committerMarvin W <git@larma.de>2017-04-18 20:20:41 +0200
commit7e388fb2bc784568734592dcb2e863dfa061bed4 (patch)
treeeb4fb804fd7cf9df02b39d37b61937f355785810 /plugins/omemo/src/plugin.vala
parentf95b4f4e0949eefaed871c267626e3ff84ce5ca6 (diff)
downloaddino-7e388fb2bc784568734592dcb2e863dfa061bed4.tar.gz
dino-7e388fb2bc784568734592dcb2e863dfa061bed4.zip
signal-protocol/omemo: fix null-pointer issues
Fixes #44 and #58
Diffstat (limited to 'plugins/omemo/src/plugin.vala')
-rw-r--r--plugins/omemo/src/plugin.vala28
1 files changed, 25 insertions, 3 deletions
diff --git a/plugins/omemo/src/plugin.vala b/plugins/omemo/src/plugin.vala
index 6a7fc3de..6851aa5e 100644
--- a/plugins/omemo/src/plugin.vala
+++ b/plugins/omemo/src/plugin.vala
@@ -5,7 +5,23 @@ namespace Dino.Plugins.Omemo {
public class Plugin : RootInterface, Object {
public const bool DEBUG = false;
- public static Signal.Context context;
+ private static Signal.Context? _context;
+ public static Signal.Context get_context() {
+ assert(_context != null);
+ return (!)_context;
+ }
+ public static bool ensure_context() {
+ lock(_context) {
+ try {
+ if (_context == null) {
+ _context = new Signal.Context(DEBUG);
+ }
+ return true;
+ } catch (Error e) {
+ return false;
+ }
+ }
+ }
public Dino.Application app;
public Database db;
@@ -14,7 +30,7 @@ public class Plugin : RootInterface, Object {
public void registered(Dino.Application app) {
try {
- context = new Signal.Context(DEBUG);
+ ensure_context();
this.app = app;
this.db = new Database(Path.build_filename(Application.get_storage_dir(), "omemo.db"));
this.list_entry = new EncryptionListEntry(this);
@@ -26,7 +42,13 @@ public class Plugin : RootInterface, Object {
});
Manager.start(this.app.stream_interaction, db);
- internationalize(GETTEXT_PACKAGE, app.search_path_generator.get_locale_path(GETTEXT_PACKAGE, LOCALE_INSTALL_DIR));
+ string locales_dir;
+ if (app.search_path_generator != null) {
+ locales_dir = ((!)app.search_path_generator).get_locale_path(GETTEXT_PACKAGE, LOCALE_INSTALL_DIR);
+ } else {
+ locales_dir = LOCALE_INSTALL_DIR;
+ }
+ internationalize(GETTEXT_PACKAGE, locales_dir);
} catch (Error e) {
print(@"Error initializing OMEMO: $(e.message)\n");
}