NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
lib/39215: getdevmajor()/major() types don't match
>Number: 39215
>Category: lib
>Synopsis: getdevmajor()/major() types don't match
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: lib-bug-people
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Sun Jul 27 06:05:00 +0000 2008
>Originator: David A. Holland
>Release: NetBSD 4.99.70 (20080727)
>Organization:
>Environment:
System: NetBSD valkyrie 4.99.69 NetBSD 4.99.69 (VALKYRIE) #30: Sun Jul 13
10:21:49 EDT 2008 root@valkyrie:/usr/src/sys/arch/amd64/compile/VALKYRIE amd64
Architecture: x86_64
Machine: amd64
>Description:
getdevmajor() returns dev_t, which is uint32_t.
major() generates an int32_t.
thus, code of the form
if (major(dev) == getdevmajor(stuff)) {
...
}
generates a compiler warning unless you set -Wno-sign-compare.
>How-To-Repeat:
compile lib/libc/gen/devname.c with -Wsign-compare enabled, among
other possibilities.
>Fix:
Probably changing major() (and minor(), for symmetry) to produce an
unsigned value is the path of least resistance... although who knows
what might break...
Home |
Main Index |
Thread Index |
Old Index