gcc42-integer-overflow-fix-20071007
authorMarc Dionne <marc.dionne@technoconseil.com>
Thu, 11 Oct 2007 18:44:53 +0000 (18:44 +0000)
committerDerrick Brashear <shadow@dementia.org>
Thu, 11 Oct 2007 18:44:53 +0000 (18:44 +0000)
fix issue where gcc 4.2 compiled kernel modules were breaking on linux

====================
This delta was composed from multiple commits as part of the CVS->Git migration.
The checkin message with each commit was inconsistent.
The following are the additional commit messages.
====================

with fix from Hans-Werner Pulsen

====================

with fix from Hans-Werner Pulsen

src/dir/dir.c

index d608639..c32f149 100644 (file)
@@ -477,7 +477,7 @@ DirHash(register char *string)
 {
     /* Hash a string to a number between 0 and NHASHENT. */
     register unsigned char tc;
-    register int hval;
+    unsigned int hval;
     register int tval;
     hval = 0;
     while ((tc = (*string++))) {
@@ -487,7 +487,7 @@ DirHash(register char *string)
     tval = hval & (NHASHENT - 1);
     if (tval == 0)
        return tval;
-    else if (hval < 0)
+    else if (hval >= 1<<31)
        tval = NHASHENT - tval;
     return tval;
 }