/* Copyright (C) 1993 by Thomas Glen Smith. All Rights Reserved. */
/* dervfree APL2 V1.0.0 ************************************************
* Called by execfree and slasherr. *
* Called to free structure for derived function. *
***********************************************************************/
#define INCLUDES APLMEM+APLDERIV
#include "includes.h"
void dervfree(dp)
Aplderiv dp;
{
Endoper; Dervfree; Temp;
if (dp == NULL || (dp->deriv_flags & DERPERM))
return; /* nothing to free */
if (dp->deriv_left.cb)
endoper(temp(dp->deriv_left.cb));
if (dp->deriv_rite.cb)
endoper(temp(dp->deriv_rite.cb));
if (dp->deriv_left.funcode == DERIVED_FUNCTION) {
if (((Aplderiv)(dp->deriv_left.fun))->deriv_flags & DERPERM)
((Aplderiv)(dp->deriv_left.fun))->deriv_flags -= DERPERM;
dervfree(dp->deriv_left.fun);
}
if (dp->deriv_axis_cb)
endoper(temp(dp->deriv_axis_cb));
free(dp);
}