diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 958318f933..0e97d5a792 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -7,6 +7,13 @@ For example: 2002-12-01 23:12 UTC+0100 Foo Bar */ +2002-02-16 20:25 UTC-0500 Jorge A. Giraldo + + Added contrib\delphi\hbdll\macrcall.c + + Added contrib\delphi\hbdll\errorsys.prg + + Added contrib\delphi\hbdll\easypath.dpr + + Added contrib\delphi\hbdll\main.pas + + ! Fixed a bug in hb_waAddField() * source/vm/arrayshb.c ! Adel() fixed - second parameter = 1 by default diff --git a/harbour/source/rdd/workarea.c b/harbour/source/rdd/workarea.c index dacb246de6..90e5435d15 100644 --- a/harbour/source/rdd/workarea.c +++ b/harbour/source/rdd/workarea.c @@ -236,7 +236,8 @@ ERRCODE hb_waAddField( AREAP pArea, LPDBFIELDINFO pFieldInfo ) ulSize = hb_strRTrimLen( ( char * ) pFieldInfo->atomName, ulSize, TRUE ); if( !ulSize ) return FAILURE; - pFieldInfo->atomName[ulSize] = '\0'; + /* This line writes to the protected memory + pFieldInfo->atomName[ulSize] = '\0'; */ pField = pArea->lpFields + pArea->uiFieldCount; if( pArea->uiFieldCount > 0 ) diff --git a/harbour/source/vm/dynlibhb.c b/harbour/source/vm/dynlibhb.c index 569c5413eb..656585a16f 100644 --- a/harbour/source/vm/dynlibhb.c +++ b/harbour/source/vm/dynlibhb.c @@ -93,6 +93,7 @@ HB_FUNC( LIBFREE ) HB_FUNC( HB_LIBDO ) { + char *szName = hb_strupr( hb_strdup( hb_parc( 1 ) ) ); PHB_DYNS pDynSym = hb_dynsymFind( hb_strupr( hb_parc( 1 ) ) ); if( pDynSym ) @@ -111,4 +112,5 @@ HB_FUNC( HB_LIBDO ) hb_vmDo( uiPCount - 1 ); } + hb_xfree( szName ); } diff --git a/harbour/source/vm/runner.c b/harbour/source/vm/runner.c index bbed50df26..0a37dde340 100644 --- a/harbour/source/vm/runner.c +++ b/harbour/source/vm/runner.c @@ -233,11 +233,12 @@ HB_FUNC( __HRBGETFU ) if( hb_pcount() > 1 && ISNUM( 1 ) && ISCHAR( 2 ) ) { PHRB_BODY pHrbBody = (PHRB_BODY) hb_parnl( 1 ); - char * szName = hb_strupr( hb_parc( 2 ) ); ULONG ulPos = 0; if( pHrbBody ) { + char * szName = hb_strupr( hb_strdup( hb_parc( 2 ) ) ); + while( ulPos < pHrbBody->ulSymbols ) { if( !strcmp( szName, pHrbBody->pSymRead[ ulPos ].szName ) ) @@ -248,6 +249,7 @@ HB_FUNC( __HRBGETFU ) hb_retnl( (LONG) ( pHrbBody->pSymRead + ulPos ) ); else hb_retnl( 0 ); + hb_xfree( szName ); } else hb_errRT_BASE( EG_ARG, 9999, NULL, "__HRBGETFU", 0 );