=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/builtin/dp.c,v retrieving revision 1.101 retrieving revision 1.102 diff -u -p -r1.101 -r1.102 --- OpenXM_contrib2/asir2000/builtin/dp.c 2017/02/27 05:21:19 1.101 +++ OpenXM_contrib2/asir2000/builtin/dp.c 2017/02/28 07:06:28 1.102 @@ -44,7 +44,7 @@ * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. * - * $OpenXM: OpenXM_contrib2/asir2000/builtin/dp.c,v 1.100 2017/02/27 05:14:53 noro Exp $ + * $OpenXM: OpenXM_contrib2/asir2000/builtin/dp.c,v 1.101 2017/02/27 05:21:19 noro Exp $ */ #include "ca.h" #include "base.h" @@ -2118,7 +2118,7 @@ void Pnd_f4(NODE arg,LIST *rp) *rp = f; return; } mq = (Q)ARG2(arg); - if ( PL(NM(mq)) > 1 || BD(NM(mq))[0] >= (1<<30) ) { + if ( mq && (PL(NM(mq)) > 1 || BD(NM(mq))[0] >= (1<<30)) ) { node = mknode(1,mq); Psetmod_ff(node,&val); m = -2; @@ -2151,7 +2151,7 @@ void Pnd_gr(NODE arg,LIST *rp) *rp = f; return; } mq = (Q)ARG2(arg); - if ( PL(NM(mq)) > 1 || BD(NM(mq))[0] >= (1<<30) ) { + if ( mq && (PL(NM(mq)) > 1 || BD(NM(mq))[0] >= (1<<30)) ) { node = mknode(1,mq); Psetmod_ff(node,&val); m = -2; @@ -2168,6 +2168,9 @@ void Pnd_gr_postproc(NODE arg,LIST *rp) { LIST f,v; int m,do_check; + Q mq; + Obj val; + NODE node; struct order_spec *ord; do_weyl = 0; @@ -2179,7 +2182,13 @@ void Pnd_gr_postproc(NODE arg,LIST *rp) if ( !BDY(f) ) { *rp = f; return; } - m = QTOS((Q)ARG2(arg)); + mq = (Q)ARG2(arg); + if ( mq && (PL(NM(mq)) > 1 || BD(NM(mq))[0] >= (1<<30)) ) { + node = mknode(1,mq); + Psetmod_ff(node,&val); + m = -2; + } else + m = QTOS(mq); create_order_spec(0,ARG3(arg),&ord); do_check = ARG4(arg) ? 1 : 0; nd_gr_postproc(f,v,m,ord,do_check,rp);