{ free_bin_tree (left); return NULL; }
return NULL;
duplicate_tree (src, dfa)     const bin_tree_t *src;     re_dfa_t *dfa;{  bin_tree_t *left = NULL, *right = NULL, *new_tree;  int new_node_idx;  /* Since node indies must be according to Post-order of the tree,     we must duplicate the left at first.  */  if (src->left != NULL)    {      left = duplicate_tree (src->left, dfa);      if (left == NULL)	return NULL;    }  /* Secondaly, duplicate the right.  */  if (src->right != NULL)    {      right = duplicate_tree (src->right, dfa);      if (right == NULL)	{	  free_bin_tree (left);	  return NULL;	}    }  /* At last, duplicate itself.  */  if (src->type == NON_TYPE)    {      new_node_idx = re_dfa_add_node (dfa, dfa->nodes[src->node_idx], 0);      dfa->nodes[new_node_idx].duplicated = 1;      if (BE (new_node_idx == -1, 0))	{	  free_bin_tree (left);	  free_bin_tree (right);	  return NULL;	}    }  else    new_node_idx = src->type;  new_tree = create_tree (left, right, src->type, new_node_idx);  if (BE (new_tree == NULL, 0))    {      free_bin_tree (left);      free_bin_tree (right);    }  return new_tree;}