| Ilya Zakharevich on Sat, 22 May 1999 14:31:16 -0400 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| Re: 2.0.15: Problems |
On Sat, May 22, 1999 at 05:30:55PM +0200, Karim BELABAS wrote:
> [Ilya: pari-dev-543]
> > Moreover, redirection of PARI error messages (via the replacable
> > handlers for printing an error line and for fflushing) does not work,
> > which breaks a build of Math::Pari Perl module. Can somebody guess
> > which edit could cause the latter behaviour?
>
> In what way does it "not work" ? The only modification I see pertaining to
> input/output is the unbuffering of logfile ouput (setbuf(0) added twice in
> gp.c), but that doesn't sound related.
Got it! The order of die()ing and flush()ing was changed, so the
message was interpreted as a warning by Perl, and then the error
message was empty (since an exception was called after flush()ing, so
the error message was emptied already).
Enjoy,
Ilya
--- ./src/headers/paristio.h~ Thu May 20 13:05:11 1999
+++ ./src/headers/paristio.h Sat May 22 14:10:56 1999
@@ -23,8 +23,9 @@ typedef struct entree {
typedef struct PariOUT {
void (*putch)(char);
void (*puts)(char*);
- void (*flush)();
- void (*die)();
+ void (*flush)(); /* Finalize a report of a non fatal-error. */
+ void (*die)(); /* If not-NULL, should be called to finalize
+ a report of a fatal error (no "\n" required). */
} PariOUT;
typedef struct pariFILE {
--- ./src/language/init.c~ Thu May 20 13:05:16 1999
+++ ./src/language/init.c Sat May 22 14:05:42 1999
@@ -602,8 +602,8 @@ err_recover(long numerr)
{
pari_outfile=stdout; errfile=stderr;
disable_dbg(-1);
- fprintferr("\n"); flusherr();
- if (pariErr->die) pariErr->die();
+ if (pariErr->die) pariErr->die(); /* Caller wants to catch exceptions? */
+ fprintferr("\n"); flusherr();
if (!environnement) exit(1);
/* reclaim memory stored in "blocs" */