コード例 #1
0
ファイル: source.c プロジェクト: amirsalah/cs2007
void snode_free(snode *c)
{
  if (NULL == c)
    return;
  switch (c->type) {
  case SNODE_APPLICATION:
    snode_free(c->left);
    snode_free(c->right);
    break;
  case SNODE_LAMBDA:
    snode_free(c->body);
    break;
  case SNODE_LETREC: {
    letrec *rec = c->bindings;
    while (rec) {
      letrec *next = rec->next;
      free_letrec(rec);
      rec = next;
    }
    snode_free(c->body);
    break;
  }
  case SNODE_BUILTIN:
  case SNODE_SYMBOL:
  case SNODE_SCREF:
  case SNODE_NIL:
  case SNODE_NUMBER:
  case SNODE_STRING:
//  case SNODE_EXTFUNC:
    break;
  default:
    abort();
  }
  free(c->value);
  free(c->name);
  free(c);
}
コード例 #2
0
ファイル: http.c プロジェクト: gtk-gnutella/gwc
void
http_destruct(http_t *ctx)
{
  DO_FREE(ctx->range_set);
  mem_chunk_free(ctx->host, ctx->host_size);
  ctx->host = NULL;

  /* Free the extra headers, if any */
  while (ctx->extra_headers) {
    snode_t *next;
  
    next = ctx->extra_headers->next;
    snode_free(ctx->extra_headers);
    ctx->extra_headers = next;
  }
}
コード例 #3
0
ファイル: source.c プロジェクト: amirsalah/cs2007
void free_letrec(letrec *rec)
{
  snode_free(rec->value);
  free(rec->name);
  free(rec);
}