[Bugme-new] [Bug 13569] New: Examples in some pages make invalid use of the assert macro
bugzilla-daemon at bugzilla.kernel.org
bugzilla-daemon at bugzilla.kernel.org
Thu Jun 18 08:10:26 PDT 2009
http://bugzilla.kernel.org/show_bug.cgi?id=13569
Summary: Examples in some pages make invalid use of the assert
macro
Product: Documentation
Version: unspecified
Kernel Version: n/a
Platform: All
OS/Version: Linux
Tree: Mainline
Status: NEW
Severity: normal
Priority: P1
Component: man-pages
AssignedTo: documentation_man-pages at kernel-bugs.osdl.org
ReportedBy: andrey.vihrov at gmail.com
Regression: No
The purpose of the assert macro, defined in <assert.h>, is to provide a tool to
check for programming mistakes or program logic errors. However, the assert
macro must never be used to perform checks for run time errors, since, with the
NDEBUG macro defined, expressions within the assert macro invocations are not
evaluated/checked for, resulting in behavior that was not originally intended.
Currently (man-pages 3.20, Gentoo Linux), some pages contain example programs
that use assert to check for run time errors, specifically, like this:
#include <assert.h>
int main (int argc, char *argv[])
{
assert(argc == 2); /* Check for argc value was intended */
}
The proper way to do this is without assert, for example, like this:
#include <stdio.h>
#include <stdlib.h>
int main (int argc, char *argv[])
{
if (argc != 2)
{
fprintf(stderr, "invalid parameter count\n");
exit(EXIT_FAILURE);
}
}
The pages affected in the core package are
execve(2)
pipe(2)
tee(2)
fmemopen(3)
mq_notify(3)
qsort(3)
--
Configure bugmail: http://bugzilla.kernel.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
More information about the Bugme-new
mailing list