* [PATCH 00/13] Fixes for problems detected by Sparse @ 2015-03-08 16:32 john 2015-03-08 16:32 ` [PATCH 01/13] Makefile: add a target to run CGit through sparse john ` (13 more replies) 0 siblings, 14 replies; 15+ messages in thread From: john @ 2015-03-08 16:32 UTC (permalink / raw) Sparse[0] detects several potential problems in CGit, which are all fixed by this set of patches. Most of these are style issues that are correct either way (using integer zero as a NULL pointer), but I think there is value in keeping the build clean of Sparse warnings. [0] https://sparse.wiki.kernel.org/index.php/Main_Page John Keeping (13): Makefile: add a target to run CGit through sparse Avoid non-ANSI function declarations Avoid signed bitfields scan-tree: make some variables 'static' shared: make some variables 'static' ui-log: make some variables 'static' ui-repolist: make sortcolumn definitions 'static const' ui-shared: make cgit_doctype 'static' ui-stats: make cgit_period definitions 'static const' ui-shared: avoid initializing static variable to zero ui-shared: don't use an integer as a NULL pointer cache: don't use an integer as a NULL pointer html: avoid using a plain integer as a NULL pointer Makefile | 3 +++ cache.c | 2 +- cgit.c | 2 +- cgit.mk | 9 ++++++++- filter.c | 2 +- html.c | 54 ++++++++++++++++++++++++++++++++---------------------- scan-tree.c | 4 ++-- shared.c | 4 ++-- ui-blob.c | 4 ++-- ui-diff.c | 4 ++-- ui-log.c | 2 +- ui-refs.c | 4 ++-- ui-repolist.c | 10 +++++----- ui-shared.c | 18 +++++++++--------- ui-ssdiff.c | 16 ++++++++-------- ui-stats.c | 14 +++++++------- ui-stats.h | 2 +- ui-summary.c | 2 +- ui-tree.c | 4 ++-- 19 files changed, 90 insertions(+), 70 deletions(-) -- 2.3.1.308.g754cd77 ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH 01/13] Makefile: add a target to run CGit through sparse 2015-03-08 16:32 [PATCH 00/13] Fixes for problems detected by Sparse john @ 2015-03-08 16:32 ` john 2015-03-08 16:32 ` [PATCH 02/13] Avoid non-ANSI function declarations john ` (12 subsequent siblings) 13 siblings, 0 replies; 15+ messages in thread From: john @ 2015-03-08 16:32 UTC (permalink / raw) Signed-off-by: John Keeping <john at keeping.me.uk> --- Makefile | 3 +++ cgit.mk | 9 ++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index ed329e8..42ed230 100644 --- a/Makefile +++ b/Makefile @@ -68,6 +68,9 @@ all:: cgit cgit: $(QUIET_SUBDIR0)git $(QUIET_SUBDIR1) -f ../cgit.mk ../cgit $(EXTRA_GIT_TARGETS) NO_CURL=1 +sparse: + $(QUIET_SUBDIR0)git $(QUIET_SUBDIR1) -f ../cgit.mk NO_CURL=1 cgit-sparse + test: @$(MAKE) --no-print-directory cgit EXTRA_GIT_TARGETS=all $(QUIET_SUBDIR0)tests $(QUIET_SUBDIR1) all diff --git a/cgit.mk b/cgit.mk index 5048b09..1b50307 100644 --- a/cgit.mk +++ b/cgit.mk @@ -96,7 +96,7 @@ CGIT_OBJS := $(addprefix $(CGIT_PREFIX),$(CGIT_OBJ_NAMES)) # Only cgit.c reference CGIT_VERSION so we only rebuild its objects when the # version changes. -CGIT_VERSION_OBJS := $(addprefix $(CGIT_PREFIX),cgit.o) +CGIT_VERSION_OBJS := $(addprefix $(CGIT_PREFIX),cgit.o cgit.sp) $(CGIT_VERSION_OBJS): $(CGIT_PREFIX)VERSION $(CGIT_VERSION_OBJS): EXTRA_CPPFLAGS = \ -DCGIT_VERSION='"$(CGIT_VERSION)"' @@ -129,3 +129,10 @@ $(CGIT_OBJS): %.o: %.c GIT-CFLAGS $(CGIT_PREFIX)CGIT-CFLAGS $(missing_dep_dirs) $(CGIT_PREFIX)cgit: $(CGIT_OBJS) GIT-LDFLAGS $(GITLIBS) @echo 1>&1 " * $(LUA_MESSAGE)" $(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) $(LIBS) $(CGIT_LIBS) + +CGIT_SP_OBJS := $(patsubst %.o,%.sp,$(CGIT_OBJS)) + +$(CGIT_SP_OBJS): %.sp: %.c GIT-CFLAGS $(CGIT_PREFIX)CGIT-CFLAGS FORCE + $(QUIET_SP)cgcc -no-compile $(ALL_CFLAGS) $(EXTRA_CPPFLAGS) $(CGIT_CFLAGS) $(SPARSE_FLAGS) $< + +cgit-sparse: $(CGIT_SP_OBJS) -- 2.3.1.308.g754cd77 ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH 02/13] Avoid non-ANSI function declarations 2015-03-08 16:32 [PATCH 00/13] Fixes for problems detected by Sparse john 2015-03-08 16:32 ` [PATCH 01/13] Makefile: add a target to run CGit through sparse john @ 2015-03-08 16:32 ` john 2015-03-08 16:32 ` [PATCH 03/13] Avoid signed bitfields john ` (11 subsequent siblings) 13 siblings, 0 replies; 15+ messages in thread From: john @ 2015-03-08 16:32 UTC (permalink / raw) Sparse says things like: warning: non-ANSI function declaration of function 'calc_ttl' Signed-off-by: John Keeping <john at keeping.me.uk> --- cgit.c | 2 +- filter.c | 2 +- ui-diff.c | 2 +- ui-refs.c | 4 ++-- ui-repolist.c | 6 +++--- ui-shared.c | 12 ++++++------ ui-ssdiff.c | 16 ++++++++-------- ui-summary.c | 2 +- ui-tree.c | 4 ++-- 9 files changed, 25 insertions(+), 25 deletions(-) diff --git a/cgit.c b/cgit.c index 0ad8171..c16ed8c 100644 --- a/cgit.c +++ b/cgit.c @@ -1013,7 +1013,7 @@ static void cgit_parse_args(int argc, const char **argv) } } -static int calc_ttl() +static int calc_ttl(void) { if (!ctx.repo) return ctx.cfg.cache_root_ttl; diff --git a/filter.c b/filter.c index 9f433db..ebf4937 100644 --- a/filter.c +++ b/filter.c @@ -72,7 +72,7 @@ static inline void hook_write(struct cgit_filter *filter, ssize_t (*new_write)(s filter_write = new_write; } -static inline void unhook_write() +static inline void unhook_write(void) { assert(filter_write != NULL); assert(current_write_filter != NULL); diff --git a/ui-diff.c b/ui-diff.c index 5b6df1f..8eff178 100644 --- a/ui-diff.c +++ b/ui-diff.c @@ -311,7 +311,7 @@ static void filepair_cb(struct diff_filepair *pair) cgit_ssdiff_footer(); } -void cgit_print_diff_ctrls() +void cgit_print_diff_ctrls(void) { int i, curr; diff --git a/ui-refs.c b/ui-refs.c index ac8a6d4..d3d71dd 100644 --- a/ui-refs.c +++ b/ui-refs.c @@ -82,7 +82,7 @@ static int print_branch(struct refinfo *ref) return 0; } -static void print_tag_header() +static void print_tag_header(void) { html("<tr class='nohover'><th class='left'>Tag</th>" "<th class='left'>Download</th>" @@ -234,7 +234,7 @@ void cgit_print_tags(int maxcount) cgit_free_reflist_inner(&list); } -void cgit_print_refs() +void cgit_print_refs(void) { html("<table class='list nowrap'>"); diff --git a/ui-repolist.c b/ui-repolist.c index e945f67..a6d0321 100644 --- a/ui-repolist.c +++ b/ui-repolist.c @@ -117,7 +117,7 @@ static void print_sort_header(const char *title, const char *sort) htmlf("'>%s</a></th>", title); } -static void print_header() +static void print_header(void) { html("<tr class='nohover'>"); print_sort_header("Name", "name"); @@ -247,7 +247,7 @@ static int sort_repolist(char *field) } -void cgit_print_repolist() +void cgit_print_repolist(void) { int i, columns = 3, hits = 0, header = 0; char *last_section = NULL; @@ -344,7 +344,7 @@ void cgit_print_repolist() cgit_print_docend(); } -void cgit_print_site_readme() +void cgit_print_site_readme(void) { if (!ctx.cfg.root_readme) return; diff --git a/ui-shared.c b/ui-shared.c index ff03cb2..6d3cfa9 100644 --- a/ui-shared.c +++ b/ui-shared.c @@ -46,7 +46,7 @@ void cgit_vprint_error(const char *fmt, va_list ap) html("</div>\n"); } -const char *cgit_httpscheme() +const char *cgit_httpscheme(void) { if (ctx.env.https && !strcmp(ctx.env.https, "on")) return "https://"; @@ -54,7 +54,7 @@ const char *cgit_httpscheme() return "http://"; } -const char *cgit_hosturl() +const char *cgit_hosturl(void) { if (ctx.env.http_host) return ctx.env.http_host; @@ -65,14 +65,14 @@ const char *cgit_hosturl() return fmtalloc("%s:%s", ctx.env.server_name, ctx.env.server_port); } -const char *cgit_currenturl() +const char *cgit_currenturl(void) { if (!ctx.qry.url) return cgit_rooturl(); return ctx.qry.url; } -const char *cgit_rooturl() +const char *cgit_rooturl(void) { if (ctx.cfg.virtual_root) return ctx.cfg.virtual_root; @@ -80,7 +80,7 @@ const char *cgit_rooturl() return ctx.cfg.script_name; } -const char *cgit_loginurl() +const char *cgit_loginurl(void) { static const char *login_url = 0; if (!login_url) @@ -735,7 +735,7 @@ void cgit_print_docstart(void) html_include(ctx.cfg.header); } -void cgit_print_docend() +void cgit_print_docend(void) { html("</div> <!-- class=content -->\n"); if (ctx.cfg.embedded) { diff --git a/ui-ssdiff.c b/ui-ssdiff.c index 08cf513..2146c71 100644 --- a/ui-ssdiff.c +++ b/ui-ssdiff.c @@ -18,7 +18,7 @@ struct deferred_lines { static struct deferred_lines *deferred_old, *deferred_old_last; static struct deferred_lines *deferred_new, *deferred_new_last; -static void create_or_reset_lcs_table() +static void create_or_reset_lcs_table(void) { int i; @@ -276,7 +276,7 @@ static void print_ssdiff_line(char *class, free(old_line); } -static void print_deferred_old_lines() +static void print_deferred_old_lines(void) { struct deferred_lines *iter_old, *tmp; iter_old = deferred_old; @@ -289,7 +289,7 @@ static void print_deferred_old_lines() } } -static void print_deferred_new_lines() +static void print_deferred_new_lines(void) { struct deferred_lines *iter_new, *tmp; iter_new = deferred_new; @@ -302,7 +302,7 @@ static void print_deferred_new_lines() } } -static void print_deferred_changed_lines() +static void print_deferred_changed_lines(void) { struct deferred_lines *iter_old, *iter_new, *tmp; int n_old_lines = calc_deferred_lines(deferred_old); @@ -337,7 +337,7 @@ static void print_deferred_changed_lines() } } -void cgit_ssdiff_print_deferred_lines() +void cgit_ssdiff_print_deferred_lines(void) { if (!deferred_old && !deferred_new) return; @@ -388,7 +388,7 @@ void cgit_ssdiff_line_cb(char *line, int len) line[len - 1] = c; } -void cgit_ssdiff_header_begin() +void cgit_ssdiff_header_begin(void) { current_old_line = -1; current_new_line = -1; @@ -396,12 +396,12 @@ void cgit_ssdiff_header_begin() html("<tr><td class='head' colspan='4'>"); } -void cgit_ssdiff_header_end() +void cgit_ssdiff_header_end(void) { html("</td><tr>"); } -void cgit_ssdiff_footer() +void cgit_ssdiff_footer(void) { if (deferred_old || deferred_new) cgit_ssdiff_print_deferred_lines(); diff --git a/ui-summary.c b/ui-summary.c index fa5ba04..b0af073 100644 --- a/ui-summary.c +++ b/ui-summary.c @@ -40,7 +40,7 @@ static void print_url(const char *url) html("</a></td></tr>\n"); } -void cgit_print_summary() +void cgit_print_summary(void) { int columns = 3; diff --git a/ui-tree.c b/ui-tree.c index 4ab0137..bbc468e 100644 --- a/ui-tree.c +++ b/ui-tree.c @@ -180,7 +180,7 @@ static int ls_item(const unsigned char *sha1, struct strbuf *base, return 0; } -static void ls_head() +static void ls_head(void) { html("<table summary='tree listing' class='list'>\n"); html("<tr class='nohover'>"); @@ -191,7 +191,7 @@ static void ls_head() html("</tr>\n"); } -static void ls_tail() +static void ls_tail(void) { html("</table>\n"); } -- 2.3.1.308.g754cd77 ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH 03/13] Avoid signed bitfields 2015-03-08 16:32 [PATCH 00/13] Fixes for problems detected by Sparse john 2015-03-08 16:32 ` [PATCH 01/13] Makefile: add a target to run CGit through sparse john 2015-03-08 16:32 ` [PATCH 02/13] Avoid non-ANSI function declarations john @ 2015-03-08 16:32 ` john 2015-03-08 16:32 ` [PATCH 04/13] scan-tree: make some variables 'static' john ` (10 subsequent siblings) 13 siblings, 0 replies; 15+ messages in thread From: john @ 2015-03-08 16:32 UTC (permalink / raw) Bitfields are only defined for unsigned types. Detected by sparse. Signed-off-by: John Keeping <john at keeping.me.uk> --- ui-blob.c | 4 ++-- ui-diff.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ui-blob.c b/ui-blob.c index a025bca..388a017 100644 --- a/ui-blob.c +++ b/ui-blob.c @@ -14,8 +14,8 @@ struct walk_tree_context { const char *match_path; unsigned char *matched_sha1; - int found_path:1; - int file_only:1; + unsigned int found_path:1; + unsigned int file_only:1; }; static int walk_tree(const unsigned char *sha1, struct strbuf *base, diff --git a/ui-diff.c b/ui-diff.c index 8eff178..1cf2ce0 100644 --- a/ui-diff.c +++ b/ui-diff.c @@ -31,7 +31,7 @@ static struct fileinfo { unsigned int removed; unsigned long old_size; unsigned long new_size; - int binary:1; + unsigned int binary:1; } *items; static int use_ssdiff = 0; -- 2.3.1.308.g754cd77 ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH 04/13] scan-tree: make some variables 'static' 2015-03-08 16:32 [PATCH 00/13] Fixes for problems detected by Sparse john ` (2 preceding siblings ...) 2015-03-08 16:32 ` [PATCH 03/13] Avoid signed bitfields john @ 2015-03-08 16:32 ` john 2015-03-08 16:32 ` [PATCH 05/13] shared: " john ` (9 subsequent siblings) 13 siblings, 0 replies; 15+ messages in thread From: john @ 2015-03-08 16:32 UTC (permalink / raw) These are not used outside this file and are not declared. Signed-off-by: John Keeping <john at keeping.me.uk> --- scan-tree.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scan-tree.c b/scan-tree.c index e900ad9..8e3cf52 100644 --- a/scan-tree.c +++ b/scan-tree.c @@ -45,8 +45,8 @@ out: return result; } -struct cgit_repo *repo; -repo_config_fn config_fn; +static struct cgit_repo *repo; +static repo_config_fn config_fn; static void repo_config(const char *name, const char *value) { -- 2.3.1.308.g754cd77 ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH 05/13] shared: make some variables 'static' 2015-03-08 16:32 [PATCH 00/13] Fixes for problems detected by Sparse john ` (3 preceding siblings ...) 2015-03-08 16:32 ` [PATCH 04/13] scan-tree: make some variables 'static' john @ 2015-03-08 16:32 ` john 2015-03-08 16:32 ` [PATCH 06/13] ui-log: " john ` (8 subsequent siblings) 13 siblings, 0 replies; 15+ messages in thread From: john @ 2015-03-08 16:32 UTC (permalink / raw) These are not used outside this file and are not declared. Signed-off-by: John Keeping <john at keeping.me.uk> --- shared.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/shared.c b/shared.c index ae17d78..a99173b 100644 --- a/shared.c +++ b/shared.c @@ -284,8 +284,8 @@ static int load_mmfile(mmfile_t *file, const unsigned char *sha1) * ripped from git and modified to use globals instead of * a special callback-struct. */ -char *diffbuf = NULL; -int buflen = 0; +static char *diffbuf = NULL; +static int buflen = 0; static int filediff_cb(void *priv, mmbuffer_t *mb, int nbuf) { -- 2.3.1.308.g754cd77 ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH 06/13] ui-log: make some variables 'static' 2015-03-08 16:32 [PATCH 00/13] Fixes for problems detected by Sparse john ` (4 preceding siblings ...) 2015-03-08 16:32 ` [PATCH 05/13] shared: " john @ 2015-03-08 16:32 ` john 2015-03-08 16:32 ` [PATCH 07/13] ui-repolist: make sortcolumn definitions 'static const' john ` (7 subsequent siblings) 13 siblings, 0 replies; 15+ messages in thread From: john @ 2015-03-08 16:32 UTC (permalink / raw) These are not used outside this file and are not declared. Signed-off-by: John Keeping <john at keeping.me.uk> --- ui-log.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui-log.c b/ui-log.c index 1b60591..32b4c47 100644 --- a/ui-log.c +++ b/ui-log.c @@ -12,7 +12,7 @@ #include "ui-shared.h" #include "argv-array.h" -int files, add_lines, rem_lines; +static int files, add_lines, rem_lines; /* * The list of available column colors in the commit graph. -- 2.3.1.308.g754cd77 ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH 07/13] ui-repolist: make sortcolumn definitions 'static const' 2015-03-08 16:32 [PATCH 00/13] Fixes for problems detected by Sparse john ` (5 preceding siblings ...) 2015-03-08 16:32 ` [PATCH 06/13] ui-log: " john @ 2015-03-08 16:32 ` john 2015-03-08 16:32 ` [PATCH 08/13] ui-shared: make cgit_doctype 'static' john ` (6 subsequent siblings) 13 siblings, 0 replies; 15+ messages in thread From: john @ 2015-03-08 16:32 UTC (permalink / raw) These are not used outside this file and are not declared; they are also never modified. Signed-off-by: John Keeping <john at keeping.me.uk> --- ui-repolist.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ui-repolist.c b/ui-repolist.c index a6d0321..2453a7f 100644 --- a/ui-repolist.c +++ b/ui-repolist.c @@ -223,7 +223,7 @@ struct sortcolumn { int (*fn)(const void *a, const void *b); }; -struct sortcolumn sortcolumn[] = { +static const struct sortcolumn sortcolumn[] = { {"section", sort_section}, {"name", sort_name}, {"desc", sort_desc}, @@ -234,7 +234,7 @@ struct sortcolumn sortcolumn[] = { static int sort_repolist(char *field) { - struct sortcolumn *column; + const struct sortcolumn *column; for (column = &sortcolumn[0]; column->name; column++) { if (strcmp(field, column->name)) -- 2.3.1.308.g754cd77 ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH 08/13] ui-shared: make cgit_doctype 'static' 2015-03-08 16:32 [PATCH 00/13] Fixes for problems detected by Sparse john ` (6 preceding siblings ...) 2015-03-08 16:32 ` [PATCH 07/13] ui-repolist: make sortcolumn definitions 'static const' john @ 2015-03-08 16:32 ` john 2015-03-08 16:32 ` [PATCH 09/13] ui-stats: make cgit_period definitions 'static const' john ` (5 subsequent siblings) 13 siblings, 0 replies; 15+ messages in thread From: john @ 2015-03-08 16:32 UTC (permalink / raw) This is not used outside this file and is not declared. Signed-off-by: John Keeping <john at keeping.me.uk> --- ui-shared.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui-shared.c b/ui-shared.c index 6d3cfa9..d4c4bb9 100644 --- a/ui-shared.c +++ b/ui-shared.c @@ -11,7 +11,7 @@ #include "cmd.h" #include "html.h" -const char cgit_doctype[] = +static const char cgit_doctype[] = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n" " \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n"; -- 2.3.1.308.g754cd77 ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH 09/13] ui-stats: make cgit_period definitions 'static const' 2015-03-08 16:32 [PATCH 00/13] Fixes for problems detected by Sparse john ` (7 preceding siblings ...) 2015-03-08 16:32 ` [PATCH 08/13] ui-shared: make cgit_doctype 'static' john @ 2015-03-08 16:32 ` john 2015-03-08 16:32 ` [PATCH 10/13] ui-shared: avoid initializing static variable to zero john ` (4 subsequent siblings) 13 siblings, 0 replies; 15+ messages in thread From: john @ 2015-03-08 16:32 UTC (permalink / raw) These definitions should not be modified (and never are) so we can move them to .rodata. Signed-off-by: John Keeping <john at keeping.me.uk> --- ui-stats.c | 14 +++++++------- ui-stats.h | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/ui-stats.c b/ui-stats.c index a264f6a..9cd8247 100644 --- a/ui-stats.c +++ b/ui-stats.c @@ -125,7 +125,7 @@ static char *pretty_year(struct tm *tm) return fmt("%d", tm->tm_year + 1900); } -struct cgit_period periods[] = { +static const struct cgit_period periods[] = { {'w', "week", 12, 4, trunc_week, dec_week, inc_week, pretty_week}, {'m', "month", 12, 4, trunc_month, dec_month, inc_month, pretty_month}, {'q', "quarter", 12, 4, trunc_quarter, dec_quarter, inc_quarter, pretty_quarter}, @@ -136,7 +136,7 @@ struct cgit_period periods[] = { * and update the period pointer to the correcsponding struct. * If no matching code is found, return 0. */ -int cgit_find_stats_period(const char *expr, struct cgit_period **period) +int cgit_find_stats_period(const char *expr, const struct cgit_period **period) { int i; char code = '\0'; @@ -165,7 +165,7 @@ const char *cgit_find_stats_periodname(int idx) } static void add_commit(struct string_list *authors, struct commit *commit, - struct cgit_period *period) + const struct cgit_period *period) { struct commitinfo *info; struct string_list_item *author, *item; @@ -209,7 +209,7 @@ static int cmp_total_commits(const void *a1, const void *a2) /* Walk the commit DAG and collect number of commits per author per * timeperiod into a nested string_list collection. */ -static struct string_list collect_stats(struct cgit_period *period) +static struct string_list collect_stats(const struct cgit_period *period) { struct string_list authors; struct rev_info rev; @@ -256,7 +256,7 @@ static void print_combined_authorrow(struct string_list *authors, int from, const char *leftclass, const char *centerclass, const char *rightclass, - struct cgit_period *period) + const struct cgit_period *period) { struct string_list_item *author; struct authorstat *authorstat; @@ -295,7 +295,7 @@ static void print_combined_authorrow(struct string_list *authors, int from, } static void print_authors(struct string_list *authors, int top, - struct cgit_period *period) + const struct cgit_period *period) { struct string_list_item *author; struct authorstat *authorstat; @@ -363,7 +363,7 @@ static void print_authors(struct string_list *authors, int top, void cgit_show_stats(void) { struct string_list authors; - struct cgit_period *period; + const struct cgit_period *period; int top, i; const char *code = "w"; diff --git a/ui-stats.h b/ui-stats.h index 341ab13..0e61b03 100644 --- a/ui-stats.h +++ b/ui-stats.h @@ -20,7 +20,7 @@ struct cgit_period { char *(*pretty)(struct tm *tm); }; -extern int cgit_find_stats_period(const char *expr, struct cgit_period **period); +extern int cgit_find_stats_period(const char *expr, const struct cgit_period **period); extern const char *cgit_find_stats_periodname(int idx); extern void cgit_show_stats(void); -- 2.3.1.308.g754cd77 ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH 10/13] ui-shared: avoid initializing static variable to zero 2015-03-08 16:32 [PATCH 00/13] Fixes for problems detected by Sparse john ` (8 preceding siblings ...) 2015-03-08 16:32 ` [PATCH 09/13] ui-stats: make cgit_period definitions 'static const' john @ 2015-03-08 16:32 ` john 2015-03-08 16:32 ` [PATCH 11/13] ui-shared: don't use an integer as a NULL pointer john ` (3 subsequent siblings) 13 siblings, 0 replies; 15+ messages in thread From: john @ 2015-03-08 16:32 UTC (permalink / raw) Sparse complains that we are using a plain integer as a NULL pointer here, but in fact we do not have to specify a value for this variable at all since it has static storage duration and thus will be initialized to NULL by the compiler. Signed-off-by: John Keeping <john at keeping.me.uk> --- ui-shared.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui-shared.c b/ui-shared.c index d4c4bb9..1e3c131 100644 --- a/ui-shared.c +++ b/ui-shared.c @@ -82,7 +82,7 @@ const char *cgit_rooturl(void) const char *cgit_loginurl(void) { - static const char *login_url = 0; + static const char *login_url; if (!login_url) login_url = fmtalloc("%s?p=login", cgit_rooturl()); return login_url; -- 2.3.1.308.g754cd77 ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH 11/13] ui-shared: don't use an integer as a NULL pointer 2015-03-08 16:32 [PATCH 00/13] Fixes for problems detected by Sparse john ` (9 preceding siblings ...) 2015-03-08 16:32 ` [PATCH 10/13] ui-shared: avoid initializing static variable to zero john @ 2015-03-08 16:32 ` john 2015-03-08 16:32 ` [PATCH 12/13] cache: " john ` (2 subsequent siblings) 13 siblings, 0 replies; 15+ messages in thread From: john @ 2015-03-08 16:32 UTC (permalink / raw) Signed-off-by: John Keeping <john at keeping.me.uk> --- ui-shared.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui-shared.c b/ui-shared.c index 1e3c131..7bcb8d3 100644 --- a/ui-shared.c +++ b/ui-shared.c @@ -119,7 +119,7 @@ char *cgit_fileurl(const char *reponame, const char *pagename, char *cgit_pageurl(const char *reponame, const char *pagename, const char *query) { - return cgit_fileurl(reponame, pagename, 0, query); + return cgit_fileurl(reponame, pagename, NULL, query); } const char *cgit_repobasename(const char *reponame) -- 2.3.1.308.g754cd77 ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH 12/13] cache: don't use an integer as a NULL pointer 2015-03-08 16:32 [PATCH 00/13] Fixes for problems detected by Sparse john ` (10 preceding siblings ...) 2015-03-08 16:32 ` [PATCH 11/13] ui-shared: don't use an integer as a NULL pointer john @ 2015-03-08 16:32 ` john 2015-03-08 16:32 ` [PATCH 13/13] html: avoid using a plain " john 2015-03-09 16:41 ` [PATCH 00/13] Fixes for problems detected by Sparse Jason 13 siblings, 0 replies; 15+ messages in thread From: john @ 2015-03-08 16:32 UTC (permalink / raw) Signed-off-by: John Keeping <john at keeping.me.uk> --- cache.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cache.c b/cache.c index 900b161..cd99812 100644 --- a/cache.c +++ b/cache.c @@ -411,7 +411,7 @@ int cache_ls(const char *path) DIR *dir; struct dirent *ent; int err = 0; - struct cache_slot slot = { 0 }; + struct cache_slot slot = { NULL }; struct strbuf fullname = STRBUF_INIT; size_t prefixlen; -- 2.3.1.308.g754cd77 ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH 13/13] html: avoid using a plain integer as a NULL pointer 2015-03-08 16:32 [PATCH 00/13] Fixes for problems detected by Sparse john ` (11 preceding siblings ...) 2015-03-08 16:32 ` [PATCH 12/13] cache: " john @ 2015-03-08 16:32 ` john 2015-03-09 16:41 ` [PATCH 00/13] Fixes for problems detected by Sparse Jason 13 siblings, 0 replies; 15+ messages in thread From: john @ 2015-03-08 16:32 UTC (permalink / raw) Sparse complains about this table because we use the integer zero as the NULL pointer. Use this as an opportunity to reformat the table so that it always contains 8 elements per row, making it easier to see which values are being set and which are not. Signed-off-by: John Keeping <john at keeping.me.uk> --- html.c | 54 ++++++++++++++++++++++++++++++++---------------------- 1 file changed, 32 insertions(+), 22 deletions(-) diff --git a/html.c b/html.c index f0ee2d6..155cde5 100644 --- a/html.c +++ b/html.c @@ -17,28 +17,38 @@ /* Percent-encoding of each character, except: a-zA-Z0-9!$()*,./:;@- */ static const char* url_escape_table[256] = { - "%00", "%01", "%02", "%03", "%04", "%05", "%06", "%07", "%08", "%09", - "%0a", "%0b", "%0c", "%0d", "%0e", "%0f", "%10", "%11", "%12", "%13", - "%14", "%15", "%16", "%17", "%18", "%19", "%1a", "%1b", "%1c", "%1d", - "%1e", "%1f", "%20", 0, "%22", "%23", 0, "%25", "%26", "%27", 0, 0, 0, - "%2b", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "%3c", "%3d", - "%3e", "%3f", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, "%5c", 0, "%5e", 0, "%60", 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "%7b", - "%7c", "%7d", 0, "%7f", "%80", "%81", "%82", "%83", "%84", "%85", - "%86", "%87", "%88", "%89", "%8a", "%8b", "%8c", "%8d", "%8e", "%8f", - "%90", "%91", "%92", "%93", "%94", "%95", "%96", "%97", "%98", "%99", - "%9a", "%9b", "%9c", "%9d", "%9e", "%9f", "%a0", "%a1", "%a2", "%a3", - "%a4", "%a5", "%a6", "%a7", "%a8", "%a9", "%aa", "%ab", "%ac", "%ad", - "%ae", "%af", "%b0", "%b1", "%b2", "%b3", "%b4", "%b5", "%b6", "%b7", - "%b8", "%b9", "%ba", "%bb", "%bc", "%bd", "%be", "%bf", "%c0", "%c1", - "%c2", "%c3", "%c4", "%c5", "%c6", "%c7", "%c8", "%c9", "%ca", "%cb", - "%cc", "%cd", "%ce", "%cf", "%d0", "%d1", "%d2", "%d3", "%d4", "%d5", - "%d6", "%d7", "%d8", "%d9", "%da", "%db", "%dc", "%dd", "%de", "%df", - "%e0", "%e1", "%e2", "%e3", "%e4", "%e5", "%e6", "%e7", "%e8", "%e9", - "%ea", "%eb", "%ec", "%ed", "%ee", "%ef", "%f0", "%f1", "%f2", "%f3", - "%f4", "%f5", "%f6", "%f7", "%f8", "%f9", "%fa", "%fb", "%fc", "%fd", - "%fe", "%ff" + "%00", "%01", "%02", "%03", "%04", "%05", "%06", "%07", + "%08", "%09", "%0a", "%0b", "%0c", "%0d", "%0e", "%0f", + "%10", "%11", "%12", "%13", "%14", "%15", "%16", "%17", + "%18", "%19", "%1a", "%1b", "%1c", "%1d", "%1e", "%1f", + "%20", NULL, "%22", "%23", NULL, "%25", "%26", "%27", + NULL, NULL, NULL, "%2b", NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, "%3c", "%3d", "%3e", "%3f", + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, "%5c", NULL, "%5e", NULL, + "%60", NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, "%7b", "%7c", "%7d", NULL, "%7f", + "%80", "%81", "%82", "%83", "%84", "%85", "%86", "%87", + "%88", "%89", "%8a", "%8b", "%8c", "%8d", "%8e", "%8f", + "%90", "%91", "%92", "%93", "%94", "%95", "%96", "%97", + "%98", "%99", "%9a", "%9b", "%9c", "%9d", "%9e", "%9f", + "%a0", "%a1", "%a2", "%a3", "%a4", "%a5", "%a6", "%a7", + "%a8", "%a9", "%aa", "%ab", "%ac", "%ad", "%ae", "%af", + "%b0", "%b1", "%b2", "%b3", "%b4", "%b5", "%b6", "%b7", + "%b8", "%b9", "%ba", "%bb", "%bc", "%bd", "%be", "%bf", + "%c0", "%c1", "%c2", "%c3", "%c4", "%c5", "%c6", "%c7", + "%c8", "%c9", "%ca", "%cb", "%cc", "%cd", "%ce", "%cf", + "%d0", "%d1", "%d2", "%d3", "%d4", "%d5", "%d6", "%d7", + "%d8", "%d9", "%da", "%db", "%dc", "%dd", "%de", "%df", + "%e0", "%e1", "%e2", "%e3", "%e4", "%e5", "%e6", "%e7", + "%e8", "%e9", "%ea", "%eb", "%ec", "%ed", "%ee", "%ef", + "%f0", "%f1", "%f2", "%f3", "%f4", "%f5", "%f6", "%f7", + "%f8", "%f9", "%fa", "%fb", "%fc", "%fd", "%fe", "%ff" }; char *fmt(const char *format, ...) -- 2.3.1.308.g754cd77 ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH 00/13] Fixes for problems detected by Sparse 2015-03-08 16:32 [PATCH 00/13] Fixes for problems detected by Sparse john ` (12 preceding siblings ...) 2015-03-08 16:32 ` [PATCH 13/13] html: avoid using a plain " john @ 2015-03-09 16:41 ` Jason 13 siblings, 0 replies; 15+ messages in thread From: Jason @ 2015-03-09 16:41 UTC (permalink / raw) Great idea. Merged. Thanks John. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.zx2c4.com/pipermail/cgit/attachments/20150309/74c0bb04/attachment.html> ^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2015-03-09 16:41 UTC | newest] Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2015-03-08 16:32 [PATCH 00/13] Fixes for problems detected by Sparse john 2015-03-08 16:32 ` [PATCH 01/13] Makefile: add a target to run CGit through sparse john 2015-03-08 16:32 ` [PATCH 02/13] Avoid non-ANSI function declarations john 2015-03-08 16:32 ` [PATCH 03/13] Avoid signed bitfields john 2015-03-08 16:32 ` [PATCH 04/13] scan-tree: make some variables 'static' john 2015-03-08 16:32 ` [PATCH 05/13] shared: " john 2015-03-08 16:32 ` [PATCH 06/13] ui-log: " john 2015-03-08 16:32 ` [PATCH 07/13] ui-repolist: make sortcolumn definitions 'static const' john 2015-03-08 16:32 ` [PATCH 08/13] ui-shared: make cgit_doctype 'static' john 2015-03-08 16:32 ` [PATCH 09/13] ui-stats: make cgit_period definitions 'static const' john 2015-03-08 16:32 ` [PATCH 10/13] ui-shared: avoid initializing static variable to zero john 2015-03-08 16:32 ` [PATCH 11/13] ui-shared: don't use an integer as a NULL pointer john 2015-03-08 16:32 ` [PATCH 12/13] cache: " john 2015-03-08 16:32 ` [PATCH 13/13] html: avoid using a plain " john 2015-03-09 16:41 ` [PATCH 00/13] Fixes for problems detected by Sparse Jason
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).