No, that will make it even worse since you'll be declaring a lot more memory
that you actually have.
The real problem is that you're ignoring the truncation, so you probably want
to use something like
if (snprintf(tempname, sizeof(tempname), "%s.%d", of1name, j) >=
sizeof(tempname)) Rf_error("file name is too long");
BTW: most OSes systems have a path limits that are no lower than 256 so you
should allow at least as much.
Cheers,
Simon
> On May 29, 2019, at 11:49 AM, jing hua zhao <[email protected]> wrote:
>
> Dear R-developers,
>
> I am struggling with packaging with sprintf and snprintf() as the following
> WARNINGS from gcc 9.x,
>
> hap_c.c:380:46: warning: �%d� directive output may be truncated writing
> between 1 and 10 bytes into a region of size between 0 and 127
> [-Wformat-truncation=]
> hap_c.c:392:46: warning: �%d� directive output may be truncated writing
> between 1 and 10 bytes into a region of size between 0 and 127
> [-Wformat-truncation=]
>
> Essentially, I have
>
> #define MAX_FILENAME_LEN 128
> char of1name[MAX_FILENAME_LEN],of2name[MAX_FILENAME_LEN],
> tempname[MAX_FILENAME_LEN];
>
> ...
>
> snprintf(tempname,sizeof(tempname),"%s.%d", of1name, j);
>
> It looks I could get around with
>
>
> #define MAX_FILENAME_LEN 128
>
> #define MAX_FILENAME_LEN2 256
>
> char of1name[MAX_FILENAME_LEN],of2name[MAX_FILENAME_LEN],
> tempname[MAX_FILENAME_LEN2];
>
> ...
> snprintf(tempname,2*sizeof(tempname)+1,"%s.%d", of1name, j)
>
> It looks a bit waste of resources to me.
>
>
> Any idea will be greatly appreciated,
>
>
>
> Jing Hua
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> [email protected] mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel