new signals
[unix-history] / usr / src / usr.bin / mail / vars.c
index 63c7a96..dab9256 100644 (file)
@@ -8,7 +8,7 @@
  * Variable handling stuff.
  */
 
  * Variable handling stuff.
  */
 
-static char *SccsId = "@(#)vars.c      2.1 %G%";
+static char *SccsId = "@(#)vars.c      2.4 %G%";
 
 /*
  * Assign a value to a variable.
 
 /*
  * Assign a value to a variable.
@@ -59,7 +59,8 @@ vcopy(str)
 
        if (equal(str, ""))
                return("");
 
        if (equal(str, ""))
                return("");
-       top = calloc(strlen(str)+1, 1);
+       if ((top = calloc(strlen(str)+1, 1)) == NULL)
+               panic ("Out of memory");
        cp = top;
        cp2 = str;
        while (*cp++ = *cp2++)
        cp = top;
        cp2 = str;
        while (*cp++ = *cp2++)
@@ -148,11 +149,14 @@ printgroup(name)
 hash(name)
        char name[];
 {
 hash(name)
        char name[];
 {
-       register int h;
+       register unsigned h;
        register char *cp;
 
        for (cp = name, h = 0; *cp; h = (h << 2) + *cp++)
                ;
        register char *cp;
 
        for (cp = name, h = 0; *cp; h = (h << 2) + *cp++)
                ;
-       h &= ~0100000;
+       if (h < 0)
+               h = -h;
+       if (h < 0)
+               h = 0;
        return(h % HSHSIZE);
 }
        return(h % HSHSIZE);
 }