Branch: refs/heads/master Author: Colomban Wendling ban@herbesfolles.org Committer: Colomban Wendling ban@herbesfolles.org Date: Sat, 06 Jul 2024 17:30:51 UTC Commit: 3a907109681ea93d2d394a94b8bea48a4d0ed1f5 https://github.com/geany/geany-plugins/commit/3a907109681ea93d2d394a94b8bea4...
Log Message: ----------- Merge pull request #1365 from b4n/geanygendoc/unknown-type-crash
geanygendoc: Fix crash if trying to document an unknown type
Modified Paths: -------------- geanygendoc/data/filetypes/c.conf geanygendoc/docs/manual.rst geanygendoc/src/ggd-doc-type.c geanygendoc/src/ggd-tag-utils.c geanygendoc/src/ggd.c
Modified: geanygendoc/data/filetypes/c.conf 6 lines changed, 6 insertions(+), 0 deletions(-) =================================================================== @@ -43,6 +43,9 @@ doctypes = { enumval.policy = FORWARD; # usually, locals are just not documented and get in the way local.policy = FORWARD; + # usually nothing useful to document + include.policy = PASS; + other.policy = PASS;
function = { template = "/**\n * {symbol}:\n{for arg in argument_list} * @{arg}: {cursor}\n{end} * \n * {cursor}\n{if returns} * \n * Returns: \n{end}{if write_since}{if returns} * \n{end} * Since: \n{end} */\n"; @@ -77,6 +80,9 @@ doctypes = { doxygen = { # usually, locals are just not documented and get in the way local.policy = FORWARD; + # usually nothing useful to document + include.policy = PASS; + other.policy = PASS;
function.template = "/**\n * {doxygen_prefix}brief {cursor}\n{for a in argument_list} * {doxygen_prefix}param {a} \n{end}{if returns} * {doxygen_prefix}returns \n{end}{if write_since} * {doxygen_prefix}since \n{end} * \n * \n */\n"; macro.template = "/**\n * {doxygen_prefix}brief {cursor}\n{for a in argument_list} * {doxygen_prefix}param {a} \n{end}{if returns} * {doxygen_prefix}returns \n{end}{if write_since} * {doxygen_prefix}since \n{end} * \n * \n */\n";
Modified: geanygendoc/docs/manual.rst 4 lines changed, 4 insertions(+), 0 deletions(-) =================================================================== @@ -346,6 +346,8 @@ Known types A field (of a class for example). ``function`` A function. +``include`` + An include directive. ``interface`` An interface. ``local`` @@ -356,6 +358,8 @@ Known types A method. ``namespace`` A namespace. +``other`` + A non-specific type that highly depend on the language. ``package`` A package. ``prototype``
Modified: geanygendoc/src/ggd-doc-type.c 6 lines changed, 5 insertions(+), 1 deletions(-) =================================================================== @@ -128,9 +128,12 @@ ggd_doc_type_get_setting (const GgdDocType *doctype, { GgdDocSetting *setting = NULL; GList *tmp; - gssize match_len = strlen (match); + gssize match_len;
g_return_val_if_fail (doctype != NULL, NULL); + g_return_val_if_fail (match != NULL, NULL); + + match_len = (gssize) strlen (match);
for (tmp = doctype->settings; tmp && ! setting; tmp = g_list_next (tmp)) { if (ggd_doc_setting_matches (tmp->data, match, match_len)) { @@ -177,6 +180,7 @@ ggd_doc_type_resolve_setting (const GgdDocType *doctype, gchar *child_match = NULL;
g_return_val_if_fail (doctype != NULL, NULL); + g_return_val_if_fail (match != NULL, NULL);
/*g_debug ("Resolving match "%s"...", child_match);*/ if (nth_child) (*nth_child) = 0;
Modified: geanygendoc/src/ggd-tag-utils.c 10 lines changed, 6 insertions(+), 4 deletions(-) =================================================================== @@ -252,22 +252,24 @@ static const struct { { tm_tag_class_t, "class" }, { tm_tag_enum_t, "enum" }, { tm_tag_enumerator_t, "enumval" }, + { tm_tag_externvar_t, "extern" }, { tm_tag_field_t, "field" }, { tm_tag_function_t, "function" }, { tm_tag_interface_t, "interface" }, + { tm_tag_include_t, "include" }, { tm_tag_local_var_t, "local" }, + { tm_tag_macro_t, "define" }, + { tm_tag_macro_with_arg_t, "macro" }, { tm_tag_member_t, "member" }, { tm_tag_method_t, "method" }, { tm_tag_namespace_t, "namespace" }, + { tm_tag_other_t, "other" }, { tm_tag_package_t, "package" }, { tm_tag_prototype_t, "prototype" }, { tm_tag_struct_t, "struct" }, { tm_tag_typedef_t, "typedef" }, { tm_tag_union_t, "union" }, - { tm_tag_variable_t, "variable" }, - { tm_tag_externvar_t, "extern" }, - { tm_tag_macro_t, "define" }, - { tm_tag_macro_with_arg_t, "macro" } + { tm_tag_variable_t, "variable" } };
/**
Modified: geanygendoc/src/ggd.c 17 lines changed, 10 insertions(+), 7 deletions(-) =================================================================== @@ -383,22 +383,25 @@ get_setting_from_tag (GgdDocType *doctype, const TMTag *tag, const TMTag **real_tag) { - GgdDocSetting *setting; + GgdDocSetting *setting = NULL; gchar *hierarchy; - gint nth_child; GPtrArray *tag_array = doc->tm_file->tags_array; GeanyFiletypeID geany_ft = FILETYPE_ID (doc->file_type);
hierarchy = ggd_tag_resolve_type_hierarchy (tag_array, geany_ft, tag); /*g_debug ("type hierarchy for tag %s is: %s", tag->name, hierarchy);*/ - setting = ggd_doc_type_resolve_setting (doctype, hierarchy, &nth_child); *real_tag = tag; - if (setting) { - for (; nth_child > 0; nth_child--) { - *real_tag = ggd_tag_find_parent (tag_array, geany_ft, *real_tag); + if (hierarchy) { + gint nth_child; + + setting = ggd_doc_type_resolve_setting (doctype, hierarchy, &nth_child); + if (setting) { + for (; nth_child > 0; nth_child--) { + *real_tag = ggd_tag_find_parent (tag_array, geany_ft, *real_tag); + } } + g_free (hierarchy); } - g_free (hierarchy);
return setting; }
-------------- This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).
plugins-commits@lists.geany.org