Project/Real_code/gnu/gawk-3.1.3/eval.c
static void
pop_fcall()
{
	NODE *n, **sp;
	int count;
	struct fcall *f;

	assert(curfcall >= 0);
	f = & fcall_list[curfcall];
	stack_ptr = f->prevstack;

	sp = f->stack;

	for (count = f->count; count > 0; count--) {
		n = *sp++;
		if (n->type == Node_var)		/* local variable */
			unref(n->var_value);
		else if (n->type == Node_var_array)	/* local array */
			assoc_clear(n);
		freenode(n);
	}
	if (f->stack)
		free((char *) f->stack);
	/* memset(f, '\0', sizeof(struct fcall)); */
	curfcall--;
}
/* pop_fcall --- pop off a single function call */
pop off a single function call
pop off a single function call
static void
pop_fcall()
{
	NODE *n, **sp;
	int count;
	struct fcall *f;
	assert(curfcall >= 0);
	f = & fcall_list[curfcall];
	stack_ptr = f->prevstack;
	sp = f->stack;
	for (count = f->count; count > 0; count--) {
		n = *sp++;
		if (n->type == Node_var)		
			unref(n->var_value);
		else if (n->type == Node_var_array)	
			assoc_clear(n);
		freenode(n);
	}
	if (f->stack)
		free((char *) f->stack);
	curfcall--;
}
static void pop_fcall ( ) { NODE * n , * * sp ; int count ; struct fcall * f ; assert ( curfcall >= 0 ) ; f = & fcall_list [ curfcall ] ; stack_ptr = f -> prevstack ; sp = f -> stack ; for ( count = f -> count ; count > 0 ; count -- ) { n = * sp ++ ; if ( n -> type == Node_var ) unref ( n -> var_value ) ; else if ( n -> type == Node_var_array ) assoc_clear ( n ) ; freenode ( n ) ; } if ( f -> stack ) free ( ( char * ) f -> stack ) ; curfcall -- ; }
pop_fcall --- pop off a single function call
pop_fcall --- pop off a single function call
/* local variable */ /* local array */ /* memset(f, '\0', sizeof(struct fcall)); */