Deutsch   English   Français   Italiano  
<86le2xhdfa.fsf@linuxsc.com>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: Tim Rentsch <tr.17687@z991.linuxsc.com>
Newsgroups: comp.lang.c
Subject: Re: Fixing a sample from K&R book using cake static analyser
Date: Fri, 21 Jun 2024 20:19:37 -0700
Organization: A noiseless patient Spider
Lines: 60
Message-ID: <86le2xhdfa.fsf@linuxsc.com>
References: <v53sl1$35qt7$1@dont-email.me> <v558hv$3dskb$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Injection-Date: Sat, 22 Jun 2024 05:19:37 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="ec2cba2faddfc9625d8883c2f98b569e";
	logging-data="3765847"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX199L9nfiDiGkt5d1fzM2e3+Awxy1iOzROw="
User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.4 (gnu/linux)
Cancel-Lock: sha1:0TffSQILbYPAjudmnlX9mPIEPC0=
	sha1:NKIChIGzcKa2Uc9ELy6ai+qb2L8=
Bytes: 2852

Lawrence D'Oliveiro <ldo@nz.invalid> writes:

> On Fri, 21 Jun 2024 09:45:21 -0300, Thiago Adams wrote:
>
>> Page 145, The C programming Language 2 Edition
>>
>> /* install:  put (name, defn) in hashtab */
>> struct nlist *install(char *name, char *defn)
>> {
>>      struct nlist *np;
>>      unsigned hashval;
>>
>>      if ((np = lookup(name)) == NULL) {  /* not found */
>>          np = (struct nlist *) malloc(sizeof(*np));
>>          if (np == NULL || (np->name = strdup(name)) == NULL)
>>              return NULL;
>>          hashval = hash(name);
>>          np->next = hashtab[hashval];
>>          hashtab[hashval] = np;
>>      } else      /* already there */
>>          free((void *) np->defn);  /* free previous defn */
>>
>>      if ((np->defn = strdup(defn)) == NULL)
>>          return NULL;
>>      return np;
>> }
>
>     struct nlist *install(char *name, char *defn)
>       {
>         struct nlist *np = NULL;
>         struct nlist *result = NULL;
>         unsigned hashval;
>         do /*once*/
>           {
>             result = lookup(name);
>             if (result != NULL)
>                 break;
>             np = (struct nlist *)calloc(1, sizeof struct nlist);
>             if (np == NULL)
>                 break;
>             np->defn = strdup(defn);
>             if (np->defn == NULL)
>                 break;
>             hashval = hash(name);
>             np->next = hashtab[hashval];
>             hashtab[hashval] = np;
>             result = np;
>             np = NULL; /* so I don?t dispose of it yet */
>           }
>         while (false);
>         if (np != NULL)
>           {
>             free(np->defn);
>           } /*if*/
>         free(np);
>         return
>             result;
>       } /*install*/

Both of these are truly awful.