coding-standard: memset before string functions similar to sprintf/snprintf etc

String functions like sprintf/snprintf/vprintf etc terminates the string with a
null character. This makes meset redundant and also incurs some performance
penalty.

Also added a comment about using GF_MALLOC instead of GF_CALLOC for allocating
buffer for strings, targeted by such functions.

Fixes: bz#1193929
Change-Id: I4f40d4fd5342b70983936119606c6c9f352c303c
Signed-off-by: Susant Palai <spalai@redhat.com>
This commit is contained in:
Susant Palai 2018-08-03 17:43:28 +05:30 committed by Amar Tumballi
parent c97938e050
commit a2829d1151

View File

@ -366,6 +366,37 @@ strcpy (entry_path, real_path);
strncpy (entry_path, real_path, entry_path_len);
```
Do not use memset prior to sprintf/snprintf/vsnprintf etc...
------------------------------------------------------------
snprintf(and other similar string functions) terminates the buffer with a
'\0'(null character). Hence, there is no need to do a memset before using
snprintf. (Of course you need to account one extra byte for the null character
in your allocation).
Note: Similarly if you are doing pre-memory allocation for the buffer, use
GF_MALLOC instead of GF_CALLOC, since the later is bit costlier.
*Bad:*
```
char buffer[x];
memset (buffer, 0, x);
bytes_read = snprintf (buffer, sizeof buffer, "bad standard");
```
*Good:*
```
char buffer[x];
bytes_read = snprintf (buffer, sizeof (buffer), "good standard");
```
And it is always to good initialize the char array if the string is static.
E.g.
```
char buffer[] = "good standard";
```
No dead or commented code
-------------------------