summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorReuben Thomas <rrt@sc3d.org>2021-11-08 15:00:35 +0000
committerReuben Thomas <rrt@sc3d.org>2021-11-08 15:02:14 +0000
commitb82bf88737c91465bd6fc1fe4a9e1f66b2e33852 (patch)
tree4039e8d46bea088fa6311d0f6e1a6734bcd6a554
parent41e116b44d3765662bf71ed00dbf40e0cfd5ea3b (diff)
downloadenchant-b82bf88737c91465bd6fc1fe4a9e1f66b2e33852.tar.gz
Make request_dict member of provider mandatory
-rw-r--r--src/lib.c30
-rw-r--r--tests/mock_provider.cpp8
2 files changed, 21 insertions, 17 deletions
diff --git a/src/lib.c b/src/lib.c
index 6ffee68..4d91c7c 100644
--- a/src/lib.c
+++ b/src/lib.c
@@ -773,17 +773,19 @@ enchant_provider_is_valid(EnchantProvider * provider)
else if (provider->identify == NULL)
g_warning ("EnchantProvider's identify method cannot be NULL\n");
else if (!g_utf8_validate((*provider->identify)(provider), -1, NULL))
- g_warning ("EnchantProvider's identify method does not return valid UTF-8.\n");
+ g_warning ("EnchantProvider's identify method does not return valid UTF-8\n");
else if (provider->describe == NULL)
g_warning ("EnchantProvider's describe method cannot be NULL\n");
else if (!g_utf8_validate((*provider->describe)(provider), -1, NULL))
- g_warning ("EnchantProvider's describe method does not return valid UTF-8.\n");
+ g_warning ("EnchantProvider's describe method does not return valid UTF-8\n");
else if (provider->dispose == NULL)
g_warning ("EnchantProvider's dispose method cannot be NULL\n");
else if (provider->dispose_dict == NULL)
g_warning ("EnchantProvider's dispose_dict method cannot be NULL\n");
else if (provider->list_dicts == NULL)
g_warning ("EnchantProvider's list_dicts method cannot be NULL\n");
+ else if (provider->request_dict == NULL)
+ g_warning ("EnchantProvider's request_dict method cannot be NULL\n");
else
return 1;
@@ -1078,21 +1080,17 @@ _enchant_broker_request_dict (EnchantBroker * broker, const char *const tag)
{
EnchantProvider * provider = (EnchantProvider *) listIter->data;
- if (provider->request_dict)
- {
- dict = (*provider->request_dict) (provider, tag);
-
- if (dict)
- {
+ dict = (*provider->request_dict) (provider, tag);
- EnchantSession *session = enchant_session_new (provider, tag);
- EnchantDictPrivateData *enchant_dict_private_data = g_new0 (EnchantDictPrivateData, 1);
- enchant_dict_private_data->reference_count = 1;
- enchant_dict_private_data->session = session;
- dict->enchant_private_data = (void *)enchant_dict_private_data;
- g_hash_table_insert (broker->dict_map, (gpointer)strdup (tag), dict);
- break;
- }
+ if (dict)
+ {
+ EnchantSession *session = enchant_session_new (provider, tag);
+ EnchantDictPrivateData *enchant_dict_private_data = g_new0 (EnchantDictPrivateData, 1);
+ enchant_dict_private_data->reference_count = 1;
+ enchant_dict_private_data->session = session;
+ dict->enchant_private_data = (void *)enchant_dict_private_data;
+ g_hash_table_insert (broker->dict_map, (gpointer)strdup (tag), dict);
+ break;
}
}
g_slist_free (list);
diff --git a/tests/mock_provider.cpp b/tests/mock_provider.cpp
index f48176b..6f94720 100644
--- a/tests/mock_provider.cpp
+++ b/tests/mock_provider.cpp
@@ -31,6 +31,12 @@ mock_provider_dispose(EnchantProvider *me)
g_free(me);
}
+static EnchantDict *
+mock_provider_request_dict(EnchantProvider *, const char *const)
+{
+ return NULL;
+}
+
static void
mock_provider_dispose_dict(EnchantProvider *me, EnchantDict *dict)
{
@@ -88,7 +94,7 @@ init_enchant_provider(void)
provider = g_new0(EnchantProvider, 1);
provider->dispose = mock_provider_dispose; //although this is technically optional, it will result in a memory leak
- provider->request_dict = NULL;
+ provider->request_dict = mock_provider_request_dict; // this is required or module won't load
provider->dispose_dict = mock_provider_dispose_dict;
provider->identify = hasIdentify ? mock_provider_identify : NULL; // this is required or module won't load
provider->describe = hasDescribe ? mock_provider_describe : NULL; // this is required or module won't load