Should this have been done on the stable branch?
Martin Kersten wrote:
> Update of /cvsroot/monetdb/MonetDB5/src/mal
> In directory 23jxhf1.ch3.sourceforge.com:/tmp/cvs-serv30687
>
> Modified Files:
> mal_session.mx
> Log Message:
> On the console it could happen that a MAL syntax error caused a crash
> in the next statement due to incomplete cleanup.
>
>
> U mal_session.mx
> Index: mal_session.mx
> ===================================================================
> RCS file: /cvsroot/monetdb/MonetDB5/src/mal/mal_session.mx,v
> retrieving revision 1.186
> retrieving revision 1.187
> diff -u -d -r1.186 -r1.187
> --- mal_session.mx 2 Apr 2009 17:51:41 -0000 1.186
> +++ mal_session.mx 11 Apr 2009 07:07:48 -0000 1.187
> @@ -495,10 +495,14 @@
> table may have grown in size.
>
> @= restoreState
> - if( c->listing)
> - printFunction(c->fdout,c->curprg->def, 0, c->listing);
> - MSresetVariables(c,c->curprg->def, c->glb, oldstate.vtop);
> - resetMalBlk(c->curprg->def,oldstate.stop);
> +{ int i;
> + for ( i=1; i<c->curprg->def->vtop; i++)
> + freeVariable(c->curprg->def,i);
> + GDKfree(c->glb);
> + c->glb = NULL;
> + c->curprg->def->vtop = 1;
> + MSinitClientPrg(c,"user", "main");
> +}
> @c
> str
> MALinitClient(Client c)
> @@ -511,15 +515,9 @@
> str
> MALexitClient(Client c)
> {
> - int i;
> if (c->glb && c->curprg->def->errors == 0)
> garbageCollector(c, c->curprg->def, c->glb,TRUE);
> - for ( i=1; i<c->curprg->def->vtop; i++)
> - freeVariable(c->curprg->def,i);
> - GDKfree(c->glb);
> - c->glb = NULL;
> - c->curprg->def->vtop = 1;
> - MSinitClientPrg(c,"user", "main");
> + @:restoreState@
> return NULL;
> }
>
> @@ -547,18 +545,20 @@
> str
> MALparser(Client c)
> {
> - InstrPtr p;
> MalBlkRecord oldstate;
>
> c->curprg->def->errors = 0;
> oldstate = *c->curprg->def;
>
> prepareMalBlk(c->curprg->def, CURRENT(c));
> - if (parseMAL(c, c->curprg) || c->curprg->def->errors) {
> + if (parseMAL(c, c->curprg) || c->curprg->def->errors ||
> + getInstrPtr(c->curprg->def, 0)->token != FUNCTIONsymbol ){;
> /* just complete it for visibility */
> pushEndInstruction(c->curprg->def);
> /* caught errors */
> showErrors(c);
> + if( c->listing)
> + printFunction(c->fdout,c->curprg->def, 0, c->listing);
> @:restoreState@
> /* now the parsing is done we should advance the stream */
> c->fdin->pos += c->yycur;
> @@ -577,15 +577,12 @@
> if (c->curprg->def->stop == 1)
> return MAL_SUCCEED;
>
> - p = getInstrPtr(c->curprg->def, 0);
> - if (p->token != FUNCTIONsymbol) {
> - @:restoreState@
> - throw(MAL, "MAL.parser", "Function signature missing");
> - }
> pushEndInstruction(c->curprg->def);
> chkProgram(c->nspace, c->curprg->def);
> if (c->curprg->def->errors) {
> showErrors(c);
> + if( c->listing)
> + printFunction(c->fdout,c->curprg->def, 0, c->listing);
> @:restoreState@
> throw(MAL, "MAL.parser", "Semantic errors detected");
> }
> @@ -619,6 +616,7 @@
>
> if (prg->def->errors > 0) {
> showErrors(c);
> + /* constructed MAL programs may not have been shown */
> if (c->listing )
> printFunction(c->fdout, c->curprg->def, 0, c->listing);
> @:restoreState@
> @@ -651,8 +649,6 @@
> str place = getExceptionPlace(msg);
> showException(getExceptionType(msg), place,
> getExceptionMessage(msg));
> GDKfree(place);
> - if (!c->listing)
> - printFunction(c->fdout, c->curprg->def, 0, c->listing);
> showErrors(c);
> }
> MSresetVariables(c,prg->def, c->glb, 0);
>
>
> ------------------------------------------------------------------------------
> This SF.net email is sponsored by:
> High Quality Requirements in a Collaborative Environment.
> Download a free trial of Rational Requirements Composer Now!
> http://p.sf.net/sfu/www-ibm-com
> _______________________________________________
> Monetdb-checkins mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/monetdb-checkins-- Sjoerd Mullender
signature.asc
Description: OpenPGP digital signature
------------------------------------------------------------------------------ This SF.net email is sponsored by: High Quality Requirements in a Collaborative Environment. Download a free trial of Rational Requirements Composer Now! http://p.sf.net/sfu/www-ibm-com
_______________________________________________ Monetdb-developers mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/monetdb-developers
