ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/common/savestr.c
(Generate patch)

Comparing ray/src/common/savestr.c (file contents):
Revision 2.8 by schorsch, Mon Oct 27 10:19:31 2003 UTC vs.
Revision 2.14 by greg, Thu Jun 8 17:48:01 2023 UTC

# Line 15 | Line 15 | static const char      RCSid[] = "$Id$";
15   *  frees memory associated with the string; it should
16   *  never be referenced again.
17   *
18 < *  External symbols declared in standard.h
18 > *  External symbols declared in rtio.h
19   */
20  
21   #include "copyright.h"
22  
23 #include <string.h>
23   #include <stdlib.h>
24  
25 < #include "rtmisc.h"
25 > #include "rterror.h"
26 > #include "rtio.h"
27  
28   #ifndef  NHASH
29 < #define  NHASH          509             /* hash table size (prime!) */
29 > #define  NHASH          2039            /* hash table size (prime!) */
30   #endif
31  
32   typedef struct s_head {
# Line 46 | Line 46 | static S_HEAD  *stab[NHASH];
46  
47  
48   char *
49 < savestr(str)                            /* save a string */
50 < char  *str;
49 > savestr(const char *str)                        /* save a string */
50   {
51 <        register int  hval;
52 <        register S_HEAD  *sp;
51 >        int  hval;
52 >        S_HEAD  *sp;
53  
54          if (str == NULL)
55                  return(NULL);
56 +        if (!*str)
57 +                return "";
58          hval = hash(str);
59          for (sp = stab[hval]; sp != NULL; sp = sp->next)
60                  if (!strcmp(str, string(sp))) {
# Line 73 | Line 74 | char  *str;
74  
75  
76   void
77 < freestr(s)                              /* free a string */
77 < char  *s;
77 > freestr(char *s)                                /* free a string */
78   {
79          int  hval;
80 <        register S_HEAD  *spl, *sp;
80 >        S_HEAD  *spl, *sp;
81  
82 <        if (s == NULL)
82 >        if (s == NULL || !*s)
83                  return;
84          hval = hash(s);
85          for (spl = NULL, sp = stab[hval]; sp != NULL; spl = sp, sp = sp->next)
# Line 97 | Line 97 | char  *s;
97  
98  
99   int
100 < shash(s)
101 < register char  *s;
100 > shash(const char *s)
101   {
102 <        register int  h = 0;
102 >        int  h = 0;
103  
104          while (*s)
105                  h = (h<<1 & 0x7fff) ^ (*s++ & 0xff);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines