/* 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); }