=================================================================== RCS file: /home/cvs/OpenXM/src/kan96xx/Kan/primitive.c,v retrieving revision 1.5 retrieving revision 1.7 diff -u -p -r1.5 -r1.7 --- OpenXM/src/kan96xx/Kan/primitive.c 2002/11/04 10:53:56 1.5 +++ OpenXM/src/kan96xx/Kan/primitive.c 2003/08/24 05:19:43 1.7 @@ -1,4 +1,4 @@ -/* $OpenXM: OpenXM/src/kan96xx/Kan/primitive.c,v 1.4 2001/05/04 01:06:25 takayama Exp $ */ +/* $OpenXM: OpenXM/src/kan96xx/Kan/primitive.c,v 1.6 2003/08/23 02:28:39 takayama Exp $ */ /* primitive.c */ /* The functions in this module were in stackmachine.c */ @@ -1283,6 +1283,7 @@ int executePrimitive(ob) KsetOrderByObjArray(ob1); break; case Sset_up_ring: + KresetDegreeShift(); ob5 = Kpop(); ob4=Kpop(); ob3=Kpop(); ob2=Kpop(); ob1=Kpop(); KsetUpRing(ob1,ob2,ob3,ob4,ob5); break; @@ -1360,8 +1361,17 @@ int executePrimitive(ob) if (ob2.tag != Sarray) { Kpush(Khead(ob2)); }else{ - ob1 = Kpop(); - Kpush(oInitW(ob1,ob2)); + if (getoaSize(ob2) > 0) { + if (getoa(ob2,getoaSize(ob2)-1).tag == Spoly) { + Kpush(oInitW(ob2,newObjectArray(0))); + }else{ + ob1 = Kpop(); + Kpush(oInitW(ob1,ob2)); + } + }else{ + ob1 = Kpop(); + Kpush(oInitW(ob1,ob2)); + } } break;