From adfb94a06dff44a20e6db0c138e145367e7611a2 Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Sat, 17 Jun 2000 17:33:58 +0000 Subject: [PATCH] 2000-06-17 19:37 UTC+0100 Victor Szakats --- harbour/ChangeLog | 12 ++++++++++++ harbour/source/common/hbstr.c | 7 +++++-- harbour/source/rtl/dir.c | 4 +++- harbour/source/rtl/left.c | 1 - harbour/source/rtl/right.c | 13 +++++-------- harbour/source/rtl/strings.c | 7 +++++-- harbour/source/rtl/transfrm.c | 16 ++++++++++++---- 7 files changed, 42 insertions(+), 18 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 5949465e57..3eabfc75ff 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -1,3 +1,15 @@ +2000-06-17 19:37 UTC+0100 Victor Szakats + + * source/common/hbstr.c + * source/rtl/strings.c + * source/rtl/dir.c + * source/rtl/transfrm.c + ! Fixed unary increment/decrement operator usage in toupper()/tolower() + functions, since these may be macros on some systems. + + * source/rtl/right.c + % Some optimization. + 2000-06-17 18:58 UTC+0100 Victor Szakats * source/compiler/harbour.y diff --git a/harbour/source/common/hbstr.c b/harbour/source/common/hbstr.c index 0c624c4344..68b5700c74 100644 --- a/harbour/source/common/hbstr.c +++ b/harbour/source/common/hbstr.c @@ -117,8 +117,11 @@ int hb_stricmp( const char * s1, const char * s2 ) while( rc == 0 && count > 0 ) { - char c1 = toupper( *s1++ ); - char c2 = toupper( *s2++ ); + char c1 = toupper( *s1 ); + char c2 = toupper( *s2 ); + + s1++; + s2++; if( c1 != c2 ) rc = ( c1 < c2 ? -1 : 1 ); diff --git a/harbour/source/rtl/dir.c b/harbour/source/rtl/dir.c index d8bfdc84d4..6ca985c901 100644 --- a/harbour/source/rtl/dir.c +++ b/harbour/source/rtl/dir.c @@ -256,7 +256,7 @@ static USHORT HarbourAttributesToMask( BYTE * byAttrib ) HB_TRACE(HB_TR_DEBUG, ("HarbourAttributesToMask(%p)", byAttrib)); - while( ( c = toupper( *pos++ ) ) != '\0' ) + while( ( c = toupper( *pos ) ) != '\0' ) { switch( c ) { @@ -278,6 +278,8 @@ static USHORT HarbourAttributesToMask( BYTE * byAttrib ) case 'L': usMask |= FA_REPARSE; break; case 'P': usMask |= FA_SPARSE; break; } + + pos++; } return usMask; diff --git a/harbour/source/rtl/left.c b/harbour/source/rtl/left.c index 71eebdf387..95ba0763b4 100644 --- a/harbour/source/rtl/left.c +++ b/harbour/source/rtl/left.c @@ -49,7 +49,6 @@ HB_FUNC( LEFT ) if( lLen > ( long ) hb_itemGetCLen( pText ) ) lLen = ( long ) hb_itemGetCLen( pText ); - else if( lLen < 0 ) lLen = 0; diff --git a/harbour/source/rtl/right.c b/harbour/source/rtl/right.c index 76c27753df..e7c5f84f59 100644 --- a/harbour/source/rtl/right.c +++ b/harbour/source/rtl/right.c @@ -46,19 +46,16 @@ HB_FUNC( RIGHT ) if( pText && ISNUM( 2 ) ) { long lLen = hb_parnl( 2 ); + long lTextLen = ( long ) hb_itemGetCLen( pText ); - if( lLen > ( long ) hb_itemGetCLen( pText ) ) - lLen = ( long ) hb_itemGetCLen( pText ); - + if( lLen > lTextLen ) + lLen = lTextLen; else if( lLen < 0 ) lLen = 0; - hb_retclen( hb_itemGetCPtr( pText ) + hb_itemGetCLen( pText ) - lLen, lLen ); + hb_retclen( hb_itemGetCPtr( pText ) + lTextLen - lLen, lLen ); } else - { - /* Clipper doesn't error */ - hb_retc( "" ); - } + hb_retc( "" ); /* Clipper doesn't error */ } diff --git a/harbour/source/rtl/strings.c b/harbour/source/rtl/strings.c index 5ee0113441..25abb06198 100644 --- a/harbour/source/rtl/strings.c +++ b/harbour/source/rtl/strings.c @@ -80,8 +80,11 @@ int hb_strnicmp( const char * s1, const char * s2, ULONG count ) while( rc == 0 && count > 0 ) { - char c1 = toupper( *s1++ ); - char c2 = toupper( *s2++ ); + char c1 = toupper( *s1 ); + char c2 = toupper( *s2 ); + + s1++; + s2++; if( c1 != c2 ) rc = ( c1 < c2 ? -1 : 1 ); diff --git a/harbour/source/rtl/transfrm.c b/harbour/source/rtl/transfrm.c index 1a9e70f928..28519b6432 100644 --- a/harbour/source/rtl/transfrm.c +++ b/harbour/source/rtl/transfrm.c @@ -204,7 +204,8 @@ HB_FUNC( TRANSFORM ) /* Upper */ case '!': { - szResult[ ulResultPos++ ] = toupper( szExp[ ulExpPos++ ] ); + szResult[ ulResultPos++ ] = toupper( szExp[ ulExpPos ] ); + ulExpPos++; bAnyPic = TRUE; break; } @@ -221,7 +222,8 @@ HB_FUNC( TRANSFORM ) case 'x': case 'X': { - szResult[ ulResultPos++ ] = ( uiPicFlags & PF_UPPER ) ? toupper( szExp[ ulExpPos++ ] ) : szExp[ ulExpPos++ ]; + szResult[ ulResultPos++ ] = ( uiPicFlags & PF_UPPER ) ? toupper( szExp[ ulExpPos ] ) : szExp[ ulExpPos ]; + ulExpPos++; bAnyPic = TRUE; break; } @@ -256,13 +258,19 @@ HB_FUNC( TRANSFORM ) else { while( ulExpPos++ < ulExpLen ) - szResult[ ulResultPos++ ] = ( uiPicFlags & PF_UPPER ) ? toupper( *szExp++ ) : *szExp++; + { + szResult[ ulResultPos++ ] = ( uiPicFlags & PF_UPPER ) ? toupper( *szExp ) : *szExp; + szExp++; + } } if( ( uiPicFlags & PF_REMAIN ) && ! bAnyPic ) { while( ulExpPos++ < ulExpLen ) - szResult[ ulResultPos++ ] = ( uiPicFlags & PF_UPPER ) ? toupper( *szExp++ ) : *szExp++; + { + szResult[ ulResultPos++ ] = ( uiPicFlags & PF_UPPER ) ? toupper( *szExp ) : *szExp; + szExp++; + } } /* Any chars left ? */