=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/engine/dalg.c,v retrieving revision 1.14 retrieving revision 1.16 diff -u -p -r1.14 -r1.16 --- OpenXM_contrib2/asir2000/engine/dalg.c 2006/10/26 10:49:17 1.14 +++ OpenXM_contrib2/asir2000/engine/dalg.c 2013/11/05 02:55:03 1.16 @@ -1,5 +1,5 @@ /* - * $OpenXM: OpenXM_contrib2/asir2000/engine/dalg.c,v 1.13 2006/01/05 00:21:20 noro Exp $ + * $OpenXM: OpenXM_contrib2/asir2000/engine/dalg.c,v 1.15 2007/02/13 07:12:54 noro Exp $ */ #include "ca.h" @@ -378,10 +378,13 @@ void dalgtoalg(DAlg da,Alg *r) if ( !(nf=current_numberfield) ) error("dalgtoalg : current_numberfield is not set"); - dtop(ALG,nf->vl,da->nm,&p); - invq(da->dn,&inv); - mulpq(p,(P)inv,&p1); - MKAlg(p1,*r); + if ( !da ) *r = 0; + else { + dtop(ALG,nf->vl,da->nm,&p); + invq(da->dn,&inv); + mulpq(p,(P)inv,&p1); + MKAlg(p1,*r); + } } void simpdalg(DAlg da,DAlg *r) @@ -571,7 +574,7 @@ int invdalg(DAlg a,DAlg *c) error("invdalg : division by 0"); else if ( NID(a) == N_Q ) { invq((Q)a,&dn); *c = (DAlg)dn; - return; + return 1; } dim = nf->dim; mb = nf->mb; @@ -659,7 +662,7 @@ NODE inv_or_split_dalg(DAlg a,DAlg *c) error("invdalg : division by 0"); else if ( NID(a) == N_Q ) { invq((Q)a,&dn); *c = (DAlg)dn; - return; + return 1; } dim = nf->dim; mb = nf->mb;