File: ghash_free.c

package info (click to toggle)
bglibs 2.04%2Bdfsg-8
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 3,468 kB
  • sloc: ansic: 15,821; perl: 674; sh: 63; makefile: 29
file content (28 lines) | stat: -rw-r--r-- 639 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <stdlib.h>
#include <string.h>

#include "ghash.h"

/** Free all data (and entries) in a \c ghash table. */
void ghash_free(struct ghash* d)
{
  unsigned long i;
  void** p;
  if (d->table != 0) {
    if (d->keyfree != 0) {
      for (i = 0, p = d->table; i < d->size; ++i, ++p)
	if (*p != 0)
	  d->keyfree(ghash_entry_keyptr(*p));
    }
    if (d->datafree != 0) {
      for (i = 0, p = d->table; i < d->size; ++i, ++p)
	if (*p != 0)
	  d->datafree(ghash_entry_dataptr(*p, d->keysize));
    }
    for (i = 0, p = d->table; i < d->size; ++i, ++p)
      if (*p != 0)
	free(*p);
    free(d->table);
  }
  memset(d, 0, sizeof *d);
}