ChangeLog 20000128-20:15 GMT+1

This commit is contained in:
Ryszard Glab
2000-01-28 19:06:03 +00:00
parent f14c3433f0
commit 68e552cc68
7 changed files with 58 additions and 8 deletions

View File

@@ -1,3 +1,19 @@
20000128-20:15 GMT+1 Ryszard Glab <rglab@imid.med.pl>
*source/macro/macro.l
*source/compiler/harbour.l
* any nonstandard characters (ASCII < 32 and ASCII > 127) are
passed to grammar analyser instead of printing on stdout
*include/hbexpr.c
*source/macro/macro.c
*source/compiler/expropt.c
* memory is released properly when more complex expression
is macro compiled eg. &( "1 + 2" ), &( ".T.:classname" )
*source/debugger/debugger.prg
* added 'LOCAL nKey' to suppress warnings
20000128-20:3 GMT+3 Luiz Rafael Culik <culik@sl.conex.net>
*source/rdd/dbcmd.c
*source/rtl/arrays.c

View File

@@ -2929,6 +2929,12 @@ static HB_EXPR_FUNC( hb_compExprUseSend )
}
case HB_EA_DELETE:
#ifdef HB_MACRO_SUPPORT
hb_compExprDelete( pSelf->value.asMessage.pObject );
if( pSelf->value.asMessage.pParms )
hb_compExprDelete( pSelf->value.asMessage.pParms );
HB_XFREE( pSelf->value.asMessage.szMessage );
#endif
break;
}
return pSelf;
@@ -4666,8 +4672,8 @@ static HB_EXPR_FUNC( hb_compExprUsePlus )
}
pSelf->ExprType = HB_ET_NUMERIC;
pSelf->ValType = HB_EV_NUMERIC;
HB_EXPR_USE( pLeft, HB_EA_DELETE );
HB_EXPR_USE( pRight, HB_EA_DELETE );
hb_compExprDelete( pLeft );
hb_compExprDelete( pRight );
}
else if( pLeft->ExprType == HB_ET_STRING && pRight->ExprType == HB_ET_STRING )
{
@@ -4815,8 +4821,8 @@ static HB_EXPR_FUNC( hb_compExprUseMinus )
}
pSelf->ExprType = HB_ET_NUMERIC;
pSelf->ValType = HB_EV_NUMERIC;
HB_EXPR_USE( pLeft, HB_EA_DELETE );
HB_EXPR_USE( pRight, HB_EA_DELETE );
hb_compExprDelete( pLeft );
hb_compExprDelete( pRight );
}
else if( pLeft->ExprType == HB_ET_STRING && pRight->ExprType == HB_ET_STRING )
{
@@ -4941,8 +4947,8 @@ static HB_EXPR_FUNC( hb_compExprUseMult )
}
pSelf->ExprType = HB_ET_NUMERIC;
pSelf->ValType = HB_EV_NUMERIC;
HB_EXPR_USE( pLeft, HB_EA_DELETE );
HB_EXPR_USE( pRight, HB_EA_DELETE );
hb_compExprDelete( pLeft );
hb_compExprDelete( pRight );
}
else
{
@@ -5172,8 +5178,8 @@ static HB_EXPR_FUNC( hb_compExprUseMod )
pSelf->ExprType = HB_ET_NUMERIC;
pSelf->ValType = HB_EV_NUMERIC;
HB_EXPR_USE( pLeft, HB_EA_DELETE );
HB_EXPR_USE( pRight, HB_EA_DELETE );
hb_compExprDelete( pLeft );
hb_compExprDelete( pRight );
}
}
}

View File

@@ -5,5 +5,6 @@
/* hbexpr.c is also included from ../macro/macro.c
* However it produces a slighty different code if used in
* macro compiler
* 1 - ignore this magic number - this is used to force compilation
*/
#include "hbexpr.c"

View File

@@ -1159,6 +1159,19 @@ Separator {SpaceTab}
[\(] ++_iOpenBracket; hb_comp_iState =SEPARATOR; return yytext[ 0 ];
[\)] --_iOpenBracket; hb_comp_iState =SEPARATOR; return yytext[ 0 ];
[\x00-\x1F] return yytext[ 0 ]; /* see below */
[\x80-\xFF] {
/* This have to be the last rule - any nonstandard and not handled
* characters should go to grammar analyser instead of printing it
* on stdout.
*/
return yytext[ 0 ];
}
%{
/* ************************************************************************ */
%}
{InvalidNumber} BEGIN INVALIDNUM_; yylval.string = hb_strupr( hb_strdup( yytext ) );
<INVALIDNUM_>("."|{Separator}+) {
hb_compGenError( hb_comp_szErrors, 'E', ERR_NUMERIC_FORMAT, NULL, NULL );

View File

@@ -932,6 +932,7 @@ return nil
METHOD ShowModal() CLASS TDbWindow
local lExit := .f.
local nKey
::lShadow = .t.
::Show()

View File

@@ -1246,6 +1246,7 @@ void hb_compCodeBlockEnd( HB_MACRO_DECL )
* NOTE: It cannot be compiled into a single library because the code
* required for macro compiler differs a little - we are passing additional
* parameter that holds macro compiler internal data
* 1 - ignore this magic number - it forces the compilation of this file
*/
#include "hbexpr.c"

View File

@@ -281,6 +281,18 @@ Separator {SpaceTab}
[\(] ++_iOpenBracket; return yytext[ 0 ];
[\)] --_iOpenBracket; return yytext[ 0 ];
[\x00-\x1F] return yytext[ 0 ]; /* see below */
[\x80-\xFF] {
/* This have to be the last rule - any nonstandard and unhandled
* characters should go to grammar analyser instead of printing it
* on stdout.
*/
return yytext[ 0 ];
}
%{
/* ************************************************************************ */
%}
{Number} {
char * ptr;