=================================================================== RCS file: /home/cvs/OpenXM/src/ox_math/mlo.c,v retrieving revision 1.15 retrieving revision 1.18 diff -u -p -r1.15 -r1.18 --- OpenXM/src/ox_math/mlo.c 2003/02/12 08:28:40 1.15 +++ OpenXM/src/ox_math/mlo.c 2003/03/23 21:56:11 1.18 @@ -1,5 +1,5 @@ /* -*- mode: C -*- */ -/* $OpenXM: OpenXM/src/ox_math/mlo.c,v 1.14 2003/01/17 11:31:10 ohara Exp $ */ +/* $OpenXM: OpenXM/src/ox_math/mlo.c,v 1.17 2003/03/18 05:20:06 ohara Exp $ */ /* Copyright (C) Katsuyoshi OHARA, 2000. @@ -88,7 +88,11 @@ mlo *receive_mlo_zz() MLGetString(stdlink, &s); ox_printf("%s", s); +#if defined(WITH_GMP) m = (mlo *)new_cmo_zz_set_string(s); +#else + m = (mlo *)new_cmo_int32(atoi(s)); +#endif /* WITH_GMP */ MLDisownString(stdlink, s); return m; } @@ -519,11 +523,14 @@ mlo *ml_return() mlo *ob; if (ml_state(INTERRUPTED)) { if (ml_next_packet() == RETURNPKT) { + /* a computation has done before the interruption */ ob = ml_return0(); + ml_clear_interruption(); }else { - ob = (mlo *)new_cmo_indeterminate((cmo *)new_cmo_string("$Aborted")); + ml_clear_interruption(); + MLFlush(stdlink); /* need for 4.x */ + ob = ml_return0(); /* ReturnPacket[$Aborted] */ } - ml_clear_interruption(); }else { ob = ml_return0(); }