示例#1
0
static void validator_dealloc(ValidatorObject *self)
{
  Py_DECREF(self->elements);

  if (self->context) {
    Context_Del(self->context);
  }

  if (self->free_context) {
    Context_Del(self->free_context);
  }

  PyObject_Del(self);
}
示例#2
0
文件: builder.c 项目: abed-hawa/amara
Context_Del(Context *self)
{
  /* This will only be set when an error has occurred, so it must be freed. */
  /* Note: If the node is container and has any children, they are freed
     in the process */
  

  if (self->node) {
    if (!Container_GET_FROZEN(self->node)) {
      /* If the container was not frozen, it means that we're deleting the
	 context before construction was complete.  We need to make sure
	 we get the children working set back before freeing it */
      self->children = _Container_GetWorkingChildren(self->node, &self->children_allocated);
    }
    
    Py_DECREF(self->node);
  }

  /* Free the working children array */
  PyMem_Free(self->children);

  if (self->next) {
    Context_Del(self->next);
  }

  PyMem_Free(self);
}
示例#3
0
static void Context_Del(Context *self)
{
  if (self->next) {
    Context_Del(self->next);
  }
  PyObject_FREE(self);
}
示例#4
0
文件: builder.c 项目: abed-hawa/amara
static void ParserState_Del(ParserState *self)
{
  if (self->context) {
    Context_Del(self->context);
  }
  if (self->free_context) {
    Context_Del(self->free_context);
  }
  Py_CLEAR(self->new_namespaces);
  Py_CLEAR(self->entity_factory);
  Py_CLEAR(self->element_factory);
  Py_CLEAR(self->text_factory);
  Py_CLEAR(self->processing_instruction_factory);
  Py_CLEAR(self->comment_factory);
  Py_CLEAR(self->owner_document);
  if (self->rule_matcher) {
    RuleMatchObject_Del(self->rule_matcher);
  }
  PyMem_Free(self);
}