[PATCH] ui-shared: fix return type of cgit_self_link
John Keeping
john at keeping.me.uk
Wed Mar 6 21:51:54 CET 2013
cgit_self_link() is a void function but implements each case it handles
by doing "return <another_void_function>" which is not valid C; section
6.8.6.4 of C11 says:
A return statement with an expression shall not appear in a
function whose return type is void.
Fix this by removing the return keywords and converting the final code
block into an "else".
Signed-off-by: John Keeping <john at keeping.me.uk>
---
Interestingly, while checking for a reference to confirm that this
really is an issue, Microsoft's compiler says this:
If the function was declared with return type void, a return
statement containing an expression generates a warning and the
expression is not evaluated.
I assume that GCC just converts "return expresion;" in a void function
into "expression; return;" which is why this hasn't been noticed.
ui-shared.c | 83 +++++++++++++++++++++++++++++++------------------------------
1 file changed, 42 insertions(+), 41 deletions(-)
diff --git a/ui-shared.c b/ui-shared.c
index af5310b..80f4aee 100644
--- a/ui-shared.c
+++ b/ui-shared.c
@@ -437,58 +437,59 @@ void cgit_self_link(char *name, const char *title, const char *class,
struct cgit_context *ctx)
{
if (!strcmp(ctx->qry.page, "repolist"))
- return cgit_index_link(name, title, class, ctx->qry.search, ctx->qry.sort,
- ctx->qry.ofs);
+ cgit_index_link(name, title, class, ctx->qry.search, ctx->qry.sort,
+ ctx->qry.ofs);
else if (!strcmp(ctx->qry.page, "summary"))
- return cgit_summary_link(name, title, class, ctx->qry.head);
+ cgit_summary_link(name, title, class, ctx->qry.head);
else if (!strcmp(ctx->qry.page, "tag"))
- return cgit_tag_link(name, title, class, ctx->qry.head,
- ctx->qry.has_sha1 ? ctx->qry.sha1 : NULL);
+ cgit_tag_link(name, title, class, ctx->qry.head,
+ ctx->qry.has_sha1 ? ctx->qry.sha1 : NULL);
else if (!strcmp(ctx->qry.page, "tree"))
- return cgit_tree_link(name, title, class, ctx->qry.head,
- ctx->qry.has_sha1 ? ctx->qry.sha1 : NULL,
- ctx->qry.path);
+ cgit_tree_link(name, title, class, ctx->qry.head,
+ ctx->qry.has_sha1 ? ctx->qry.sha1 : NULL,
+ ctx->qry.path);
else if (!strcmp(ctx->qry.page, "plain"))
- return cgit_plain_link(name, title, class, ctx->qry.head,
- ctx->qry.has_sha1 ? ctx->qry.sha1 : NULL,
- ctx->qry.path);
+ cgit_plain_link(name, title, class, ctx->qry.head,
+ ctx->qry.has_sha1 ? ctx->qry.sha1 : NULL,
+ ctx->qry.path);
else if (!strcmp(ctx->qry.page, "log"))
- return cgit_log_link(name, title, class, ctx->qry.head,
- ctx->qry.has_sha1 ? ctx->qry.sha1 : NULL,
- ctx->qry.path, ctx->qry.ofs,
- ctx->qry.grep, ctx->qry.search,
- ctx->qry.showmsg);
+ cgit_log_link(name, title, class, ctx->qry.head,
+ ctx->qry.has_sha1 ? ctx->qry.sha1 : NULL,
+ ctx->qry.path, ctx->qry.ofs,
+ ctx->qry.grep, ctx->qry.search,
+ ctx->qry.showmsg);
else if (!strcmp(ctx->qry.page, "commit"))
- return cgit_commit_link(name, title, class, ctx->qry.head,
- ctx->qry.has_sha1 ? ctx->qry.sha1 : NULL,
- ctx->qry.path, 0);
+ cgit_commit_link(name, title, class, ctx->qry.head,
+ ctx->qry.has_sha1 ? ctx->qry.sha1 : NULL,
+ ctx->qry.path, 0);
else if (!strcmp(ctx->qry.page, "patch"))
- return cgit_patch_link(name, title, class, ctx->qry.head,
- ctx->qry.has_sha1 ? ctx->qry.sha1 : NULL,
- ctx->qry.path);
+ cgit_patch_link(name, title, class, ctx->qry.head,
+ ctx->qry.has_sha1 ? ctx->qry.sha1 : NULL,
+ ctx->qry.path);
else if (!strcmp(ctx->qry.page, "refs"))
- return cgit_refs_link(name, title, class, ctx->qry.head,
- ctx->qry.has_sha1 ? ctx->qry.sha1 : NULL,
- ctx->qry.path);
+ cgit_refs_link(name, title, class, ctx->qry.head,
+ ctx->qry.has_sha1 ? ctx->qry.sha1 : NULL,
+ ctx->qry.path);
else if (!strcmp(ctx->qry.page, "snapshot"))
- return cgit_snapshot_link(name, title, class, ctx->qry.head,
- ctx->qry.has_sha1 ? ctx->qry.sha1 : NULL,
- ctx->qry.path);
+ cgit_snapshot_link(name, title, class, ctx->qry.head,
+ ctx->qry.has_sha1 ? ctx->qry.sha1 : NULL,
+ ctx->qry.path);
else if (!strcmp(ctx->qry.page, "diff"))
- return cgit_diff_link(name, title, class, ctx->qry.head,
- ctx->qry.sha1, ctx->qry.sha2,
- ctx->qry.path, 0);
+ cgit_diff_link(name, title, class, ctx->qry.head,
+ ctx->qry.sha1, ctx->qry.sha2,
+ ctx->qry.path, 0);
else if (!strcmp(ctx->qry.page, "stats"))
- return cgit_stats_link(name, title, class, ctx->qry.head,
- ctx->qry.path);
-
- /* Don't known how to make link for this page */
- repolink(title, class, ctx->qry.page, ctx->qry.head, ctx->qry.path);
- html("><!-- cgit_self_link() doesn't know how to make link for page '");
- html_txt(ctx->qry.page);
- html("' -->");
- html_txt(name);
- html("</a>");
+ cgit_stats_link(name, title, class, ctx->qry.head,
+ ctx->qry.path);
+ else {
+ /* Don't known how to make link for this page */
+ repolink(title, class, ctx->qry.page, ctx->qry.head, ctx->qry.path);
+ html("><!-- cgit_self_link() doesn't know how to make link for page '");
+ html_txt(ctx->qry.page);
+ html("' -->");
+ html_txt(name);
+ html("</a>");
+ }
}
void cgit_object_link(struct object *obj)
--
1.8.2.rc2.4.g7799588
More information about the CGit
mailing list