library: tweak new interface code and improve comments

With a little help from smatch, this commit eliminates
some inappropriate code. Also some programmer comments
were (barely) improved (i hope) in some small measure.

Reference(s):
smatch: 406 procps_meminfo_chain_fill() warn: variable dereferenced before check 'chain' (see line 403)

Signed-off-by: Jim Warner <james.warner@comcast.net>
This commit is contained in:
Jim Warner 2015-07-13 00:00:00 -05:00 committed by Craig Small
parent 8d9612f782
commit 74cb6afcc9
2 changed files with 8 additions and 12 deletions

View File

@ -400,16 +400,14 @@ PROCPS_EXPORT int procps_meminfo_chain_fill (
struct procps_meminfo *info, struct procps_meminfo *info,
struct meminfo_chain *chain) struct meminfo_chain *chain)
{ {
struct meminfo_result *these = chain->head;
int rc; int rc;
if (info == NULL || chain == NULL || these == NULL) if (info == NULL || chain == NULL || chain->head == NULL)
return -EINVAL; return -EINVAL;
if ((rc == procps_meminfo_read(info)) < 0) if ((rc == procps_meminfo_read(info)) < 0)
return rc; return rc;
return procps_meminfo_getchain(info, these); return procps_meminfo_getchain(info, chain->head);
} }
static void chains_validate (struct meminfo_chain **v, const char *who) static void chains_validate (struct meminfo_chain **v, const char *who)
@ -535,7 +533,7 @@ static struct meminfo_chain **procps_meminfo_chains_alloc (
* Allocate and initialize a single result chain under a simplified interface. * Allocate and initialize a single result chain under a simplified interface.
* *
* Such a chain will will have its result structures properly primed with * Such a chain will will have its result structures properly primed with
* 'items' and 'next' pointers, while the result itself is set to zero. * 'items' and 'next' pointers, while the result itself will be zeroed.
* *
*/ */
PROCPS_EXPORT struct meminfo_chain *procps_meminfo_chain_alloc ( PROCPS_EXPORT struct meminfo_chain *procps_meminfo_chain_alloc (

View File

@ -565,12 +565,10 @@ PROCPS_EXPORT int procps_slabnode_chain_fill (
struct slabnode_chain *chain, struct slabnode_chain *chain,
int nodeid) int nodeid)
{ {
struct slabnode_result *these = chain->head; if (info == NULL || chain == NULL || chain->head == NULL)
if (info == NULL || these == NULL)
return -EINVAL; return -EINVAL;
return procps_slabnode_getchain(info, these, nodeid); return procps_slabnode_getchain(info, chain->head, nodeid);
} }
/* /*
@ -746,7 +744,7 @@ PROCPS_EXPORT struct slabnode_chain **procps_slabnode_chains_alloc (
* Allocate and initialize a single result chain under a simplified interface. * Allocate and initialize a single result chain under a simplified interface.
* *
* Such a chain will will have its result structures properly primed with * Such a chain will will have its result structures properly primed with
* 'items' and 'next' pointers, while the result itself is set to zero. * 'items' and 'next' pointers, while the result itself will be zeroed.
* *
*/ */
PROCPS_EXPORT struct slabnode_chain *procps_slabnode_chain_alloc ( PROCPS_EXPORT struct slabnode_chain *procps_slabnode_chain_alloc (
@ -772,7 +770,7 @@ static int chains_sort (
{ {
const struct slabnode_result *a = (*A)->head + *offset; const struct slabnode_result *a = (*A)->head + *offset;
const struct slabnode_result *b = (*B)->head + *offset; const struct slabnode_result *b = (*B)->head + *offset;
// note: strings are sorted normally, but numbers will be high-to-low // note: everything will be sorted high-to-low
if (a->item == PROCPS_SLABNODE_NAME) if (a->item == PROCPS_SLABNODE_NAME)
return strcoll(a->result.str, b->result.str); return strcoll(a->result.str, b->result.str);
if ( a->result.num > b->result.num ) return -1; if ( a->result.num > b->result.num ) return -1;
@ -786,7 +784,7 @@ static int chains_sort (
* Sort chains anchored as 'heads' in the passed slabnode_chain pointers * Sort chains anchored as 'heads' in the passed slabnode_chain pointers
* array based on the designated sort enumerator. * array based on the designated sort enumerator.
* *
* Returns the same structure with those pointers sorted. * Returns those same addresses sorted.
* *
* Note: all of the chains must be homogeneous (of equal length and content). * Note: all of the chains must be homogeneous (of equal length and content).
*/ */