[pacman-dev] [PATCH] Fix clang 8 string-plus-int warnings

Allan McRae allan at archlinux.org
Wed May 8 00:12:42 UTC 2019


On 5/4/19 8:02 am, Rikard Falkeborn wrote:
> Clang 8 warns that adding a string to an integer does not append to
> string. Indeed it doesn't, but that was not the intentetion. Use array
> indexing as suggested by the compiler to silence the warning. There
> should be no functional change.
> 
> Example of warning message:
> 
>     alpm.c:71:54: warning: adding 'int' to a string does not append to the string [-Wstring-plus-int]
>             sprintf(hookdir, "%s%s", myhandle->root, SYSHOOKDIR + 1);
>                                                      ~~~~~~~~~~~^~~
>     alpm.c:71:54: note: use array indexing to silence this warning
>             sprintf(hookdir, "%s%s", myhandle->root, SYSHOOKDIR + 1);
>                                                                 ^
>                                                      &          [  ]
>     1 warning generated.


Ack.

My solution was to switch back to gcc!

> ---
>  lib/libalpm/alpm.c | 2 +-
>  src/pacman/conf.c  | 4 ++--
>  2 files changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/lib/libalpm/alpm.c b/lib/libalpm/alpm.c
> index 0f3db6f4..bd7a129a 100644
> --- a/lib/libalpm/alpm.c
> +++ b/lib/libalpm/alpm.c
> @@ -68,7 +68,7 @@ alpm_handle_t SYMEXPORT *alpm_initialize(const char *root, const char *dbpath,
>  	 * with a slash) correctly, we skip SYSHOOKDIR[0]; the regular +1 therefore
>  	 * disappears from the allocation */
>  	MALLOC(hookdir, strlen(myhandle->root) + strlen(SYSHOOKDIR), goto nomem);
> -	sprintf(hookdir, "%s%s", myhandle->root, SYSHOOKDIR + 1);
> +	sprintf(hookdir, "%s%s", myhandle->root, &SYSHOOKDIR[1]);
>  	myhandle->hookdirs = alpm_list_add(NULL, hookdir);
>  
>  	/* set default database extension */
> diff --git a/src/pacman/conf.c b/src/pacman/conf.c
> index 3b79fbc7..2d8518c4 100644
> --- a/src/pacman/conf.c
> +++ b/src/pacman/conf.c
> @@ -975,11 +975,11 @@ int setdefaults(config_t *c)
>  	if(c->rootdir) {
>  		char path[PATH_MAX];
>  		if(!c->dbpath) {
> -			snprintf(path, PATH_MAX, "%s/%s", c->rootdir, DBPATH + 1);
> +			snprintf(path, PATH_MAX, "%s/%s", c->rootdir, &DBPATH[1]);
>  			SETDEFAULT(c->dbpath, strdup(path));
>  		}
>  		if(!c->logfile) {
> -			snprintf(path, PATH_MAX, "%s/%s", c->rootdir, LOGFILE + 1);
> +			snprintf(path, PATH_MAX, "%s/%s", c->rootdir, &LOGFILE[1]);
>  			SETDEFAULT(c->logfile, strdup(path));
>  		}
>  	} else {
> 


More information about the pacman-dev mailing list