fix(ai): align ai_list_providers with documented contract
All checks were successful
CI Code / Check coding style (pull_request) Successful in 48s
CI Code / Check spelling (pull_request) Successful in 33s
CI Code / Linux (debian) (pull_request) Successful in 4m47s
CI Code / Linux (arch) (pull_request) Successful in 5m29s
CI Code / Code Coverage (pull_request) Successful in 2m45s
CI Code / Linux (ubuntu) (pull_request) Successful in 4m29s
All checks were successful
CI Code / Check coding style (pull_request) Successful in 48s
CI Code / Check spelling (pull_request) Successful in 33s
CI Code / Linux (debian) (pull_request) Successful in 4m47s
CI Code / Linux (arch) (pull_request) Successful in 5m29s
CI Code / Code Coverage (pull_request) Successful in 2m45s
CI Code / Linux (ubuntu) (pull_request) Successful in 4m29s
Remove ai_provider_ref() from ai_list_providers() so the returned providers do not need to be unref'd by the caller. This matches the header docstring which states "caller must not free the list or providers". Also update all callers (cmd_ai_providers, tests) to remove redundant ai_provider_unref() calls.
This commit is contained in:
@@ -328,7 +328,7 @@ ai_list_providers(void)
|
||||
|
||||
g_hash_table_iter_init(&iter, providers);
|
||||
while (g_hash_table_iter_next(&iter, &key, &value)) {
|
||||
result = g_list_append(result, ai_provider_ref((AIProvider*)value));
|
||||
result = g_list_append(result, value);
|
||||
}
|
||||
|
||||
return result;
|
||||
|
||||
@@ -97,7 +97,8 @@ void ai_provider_unref(AIProvider* provider);
|
||||
|
||||
/**
|
||||
* List all configured providers.
|
||||
* @return GList of AIProvider* (caller must not free the list or providers)
|
||||
* @return GList of AIProvider* (caller must not free the list or providers,
|
||||
* and must not unref the returned providers)
|
||||
*/
|
||||
GList* ai_list_providers(void);
|
||||
|
||||
|
||||
@@ -10929,7 +10929,6 @@ cmd_ai_providers(ProfWin* window, const char* const command, gchar** args)
|
||||
}
|
||||
cons_show("");
|
||||
g_free(key);
|
||||
ai_provider_unref(provider);
|
||||
}
|
||||
g_list_free(providers);
|
||||
|
||||
|
||||
@@ -78,10 +78,7 @@ test_ai_list_providers(void** state)
|
||||
assert_non_null(providers);
|
||||
assert_int_equal(2, g_list_length(providers)); /* openai and perplexity */
|
||||
|
||||
/* Free list and unref providers (ai_list_providers returns ref'd providers) */
|
||||
for (GList* l = providers; l; l = g_list_next(l)) {
|
||||
ai_provider_unref(l->data);
|
||||
}
|
||||
/* Free list (ai_list_providers returns non-ref'd providers; caller must not unref) */
|
||||
g_list_free(providers);
|
||||
|
||||
/* Add another provider */
|
||||
@@ -89,10 +86,7 @@ test_ai_list_providers(void** state)
|
||||
providers = ai_list_providers();
|
||||
assert_int_equal(3, g_list_length(providers));
|
||||
|
||||
/* Free list and unref providers */
|
||||
for (GList* l = providers; l; l = g_list_next(l)) {
|
||||
ai_provider_unref(l->data);
|
||||
}
|
||||
/* Free list */
|
||||
g_list_free(providers);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user