diff options
author | Rich Megginson <rmeggins@redhat.com> | 2008-10-08 17:29:05 +0000 |
---|---|---|
committer | Rich Megginson <rmeggins@redhat.com> | 2008-10-08 17:29:05 +0000 |
commit | b3797a8704696ed77b69a042e75ce5553e24b68b (patch) | |
tree | eae8ee4c9ce9e46c010334d72e942d17ee71f768 /lib/libsi18n | |
parent | 9506a1d704ce99945e12dc797f932b4a50a0da24 (diff) | |
download | ds-b3797a8704696ed77b69a042e75ce5553e24b68b.tar.gz ds-b3797a8704696ed77b69a042e75ce5553e24b68b.tar.xz ds-b3797a8704696ed77b69a042e75ce5553e24b68b.zip |
Bug Description: Need to address 64-bit compiler warnings - part 1
Reviewed by: nhosoi (Thanks!)
Fix Description: The intptr_t and uintptr_t are types which are defined as integer types that are the same size as the pointer (void *) type. On the platforms we currently support, this is the same as long and unsigned long, respectively (ILP32 and LP64). However, intptr_t and uintptr_t are more portable. These can be used to assign a value passed as a void * to get an integer value, then "cast down" to an int or PRBool, and vice versa. This seems to be a common idiom in other applications where values must be passed as void *.
For the printf/scanf formats, there is a standard header called inttypes.h which defines formats to use for various 64 bit quantities, so that you don't need to figure out if you have to use %lld or %ld for a 64-bit value - you just use PRId64 which is set to the correct value. I also assumed that size_t is defined as the same size as a pointer so I used the PRIuPTR format macro for size_t.
I removed many unused variables and some unused functions.
I put parentheses around assignments in conditional expressions to tell the compiler not to complain about them.
I cleaned up some #defines that were defined more than once.
I commented out some unused goto labels.
Some of our header files shared among several source files define static variables. I made it so that those variables are not defined unless a macro is set in the source file. This avoids a lot of unused variable warnings.
I added some return values to functions that were declared as returning a value but did not return a value. In all of these cases no one was checking the return value anyway.
I put explicit parentheses around cases like this: expr || expr && expr - the && has greater precedence than the ||. The compiler complains because it wants you to make sure you mean expr || (expr && expr), not (expr || expr) && expr.
I cleaned up several places where the compiler was complaining about possible use of uninitialized variables. There are still a lot of these cases remaining.
There are a lot of warnings like this:
lib/ldaputil/certmap.c:1279: warning: dereferencing type-punned pointer will break strict-aliasing rules
These are due to our use of void ** to pass in addresses of addresses of structures. Many of these are calls to slapi_ch_free, but many are not - they are cases where we do not know what the type is going to be and may have to cast and modify the structure or pointer. I started replacing the calls to slapi_ch_free with slapi_ch_free_string, but there are many many more that need to be fixed.
The dblayer code also contains a fix for https://bugzilla.redhat.com/show_bug.cgi?id=463991 - instead of checking for dbenv->foo_handle to see if a db "feature" is enabled, instead check the flags passed to open the dbenv. This works for bdb 4.2 through bdb 4.7 and probably other releases as well.
Platforms tested: RHEL5 x86_64, Fedora 8 i386
Flag Day: no
Doc impact: no
Diffstat (limited to 'lib/libsi18n')
-rw-r--r-- | lib/libsi18n/getstrmem.h | 10 | ||||
-rw-r--r-- | lib/libsi18n/gsslapd.h | 8 |
2 files changed, 4 insertions, 14 deletions
diff --git a/lib/libsi18n/getstrmem.h b/lib/libsi18n/getstrmem.h index 12f58caf..cbdcbd17 100644 --- a/lib/libsi18n/getstrmem.h +++ b/lib/libsi18n/getstrmem.h @@ -53,7 +53,6 @@ static char emptyString[] = ""; #define NUM_BUCKETS 32 /* must be a power of 2 */ /* strings in library libadmin */ -static char* libadminid[] = {"$DBT: libadmin in memory v1 $"}; static char* libadmin[] = { "", " Help ", @@ -89,7 +88,6 @@ static struct DATABIN bucket5[] = { {emptyString,NULL,0} }; /* strings in library userforms */ -static char* userformsid[] = {"$DBT: userforms in memory v1 $"}; static char* userforms[] = { "", "Error: could not open servers list file.<p>\n", @@ -113,7 +111,6 @@ static struct DATABIN bucket8[] = { {emptyString,NULL,0} }; /* strings in library libaccess */ -static char* libaccessid[] = {"$DBT: libaccess in memory v1 $"}; static char* libaccess[] = { "", "basic-ncsa", @@ -274,7 +271,6 @@ static struct DATABIN bucket10[] = { {emptyString,NULL,0} }; /* strings in library frame */ -static char* frameid[] = {"$DBT: frame in memory v1 $"}; static char* frame[] = { "", "<TITLE>Not Found</TITLE><H1>Not Found</H1> The requested object does not exist on this server. The link you followed is either outdated, inaccurate, or the server has been instructed not to let you have it. ", @@ -465,7 +461,6 @@ static struct DATABIN bucket17[] = { {emptyString,NULL,0} }; /* strings in library admserv */ -static char* admservid[] = {"$DBT: admserv in memory v1 $"}; static char* admserv[] = { "", "Unauthorized host", @@ -477,7 +472,6 @@ static char* admserv[] = { emptyString }; /* strings in library libir */ -static char* libirid[] = {"$DBT: libadmin in memory v1 $"}; static char* libir[] = { "", "An I/O error occurred before all form data could be read.", @@ -494,7 +488,6 @@ static struct DATABIN bucket19[] = { {emptyString,NULL,0} }; /* strings in library httpdaemon */ -static char* httpdaemonid[] = {"$DBT: httpdaemon in memory v1 $"}; static char* httpdaemon[] = { "", "Error in ConvertThreadToFiber", @@ -540,7 +533,6 @@ static struct DATABIN bucket20[] = { {emptyString,NULL,0} }; /* strings in library dsgw */ -static char* dsgwid[] = {"$DBT: dsgw in memory v1 $"}; static char* dsgw[] = { "", "Unknown HTTP request method", @@ -856,7 +848,6 @@ static struct DATABIN bucket26[] = { {emptyString,NULL,0} }; /* strings in library base */ -static char* baseid[] = {"$DBT: base in memory v1 $"}; static char* base[] = { "", "insufficient memory to create hash table", @@ -1072,7 +1063,6 @@ static struct DATABIN bucket27[] = { {emptyString,NULL,0} }; /* strings in library cgiadmin */ -static char* cgiadminid[] = {"$DBT: cgiadmin in memory v1 $"}; static char* cgiadmin[] = { "", "Missing REQUEST_METHOD", diff --git a/lib/libsi18n/gsslapd.h b/lib/libsi18n/gsslapd.h index ce77ed33..aad6ac20 100644 --- a/lib/libsi18n/gsslapd.h +++ b/lib/libsi18n/gsslapd.h @@ -54,10 +54,10 @@ #undef LIBRARY_NAME static RESOURCE_GLOBAL allxpstr[] = { - base, - libaccess, - libadmin, - 0 + {base}, + {libaccess}, + {libadmin}, + {0} }; #endif /* ifdef RESOURCE_STR */ |