2010-06-08 20:28 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)

* src/rtl/hbregexc.c
    + Restored RTE which is thrown when unsupported regex string is
      found in any .prg level regex API calls except HB_REGEXCOMP().
      The only difference compared to previous solution is different
      error code (3015) to differenciate this case from wrong
      parameter _type_ error cases.
    ; TOFIX: IMO even current solution is not ideal, because it just
             forces developers to use HB_ISREGEX() to pre-evaluate regex
             strings before actually using them (causing performance hit),
             or it forces them to use HB_REGEXCOMP() to pre-compile and
             pre-evaluate the expressions before passing them to actual
             regex functions, in the valid case they want to avoid unexpected
             RTEs due to missing or unsupported regex (PCRE) subsystem.
             IOW it makes plain HB_ATX( <cRegExp>, ... ) style calls
             prone to fail with RTE in certain, very hard to predict
             situations in officially supported Harbour builds.
             Comments are appreciated.

  * utils/hbmk2/hbmk2.prg
    * Deleted unused code.
    * Formatting.
This commit is contained in:
Viktor Szakats
2010-06-08 18:32:53 +00:00
parent 87657b036f
commit 45447a4c91
3 changed files with 26 additions and 14 deletions

View File

@@ -16,12 +16,35 @@
The license applies to all entries newer than 2009-04-28.
*/
2010-06-08 20:28 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* src/rtl/hbregexc.c
+ Restored RTE which is thrown when unsupported regex string is
found in any .prg level regex API calls except HB_REGEXCOMP().
The only difference compared to previous solution is different
error code (3015) to differenciate this case from wrong
parameter _type_ error cases.
; TOFIX: IMO even current solution is not ideal, because it just
forces developers to use HB_ISREGEX() to pre-evaluate regex
strings before actually using them (causing performance hit),
or it forces them to use HB_REGEXCOMP() to pre-compile and
pre-evaluate the expressions before passing them to actual
regex functions, in the valid case they want to avoid unexpected
RTEs due to missing or unsupported regex (PCRE) subsystem.
IOW it makes plain HB_ATX( <cRegExp>, ... ) style calls
prone to fail with RTE in certain, very hard to predict
situations in officially supported Harbour builds.
Comments are appreciated.
* utils/hbmk2/hbmk2.prg
* Deleted unused code.
* Formatting.
2010-06-08 19:58 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/src/rtl/hbsocket.c
! added missing code to duplicate IP6 address passed explicitly
to hb_socketResolveAddr() - thanks to Mindaugas for reporting
the problem
2010-06-08 09:21 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com)
+ contrib/hbide/resources/idepreferences.png
+ Icon for "hbIDE Setup" option.

View File

@@ -153,6 +153,8 @@ PHB_REGEX hb_regexGet( PHB_ITEM pRegExItm, int iFlags )
if( fArgError )
hb_errRT_BASE_SubstR( EG_ARG, 3012, NULL, HB_ERR_FUNCNAME, 1, pRegExItm );
else if( ! pRegEx ) /* hb_regexCompile() failed */
hb_errRT_BASE_SubstR( EG_ARG, 3015, NULL, HB_ERR_FUNCNAME, 1, pRegExItm );
return pRegEx;
}

View File

@@ -5828,7 +5828,7 @@ STATIC FUNCTION FindNewerHeaders( hbmk, cFileName, cParentDir, lSystemHeader, tT
s_hRegexInclude := hb_regexComp( '^[ \t]*#[ \t]*include[ \t]*(\".+?\"|<.+?>)', .F. /* lCaseSensitive */, .T. /* lNewLine */ )
IF Empty( s_hRegexInclude )
hbmk_OutErr( hbmk, I_( "Internal Error: Regular expression engine missing or unsupported. Please check your Harbour build settings." ) )
s_hRegexInclude := {} /* To show the error only once by setting to non-NIL empty value*/
s_hRegexInclude := {} /* To show the error only once by setting to non-NIL empty value */
ENDIF
ENDIF
@@ -5853,19 +5853,6 @@ STATIC FUNCTION FindNewerHeaders( hbmk, cFileName, cParentDir, lSystemHeader, tT
RETURN headstate[ _HEADSTATE_lAnyNewer ]
/* NOTE: Required for older versions of Harbour where hb_regexComp()
is throwing an RTE in case of an invalid regular expression. */
STATIC FUNCTION hbmk_regexComp( ... )
LOCAL hRegex
BEGIN SEQUENCE WITH {| oError | Break( oError ) }
hRegex := hb_regexComp( ... )
RECOVER
hRegex := NIL
END SEQUENCE
RETURN hRegex
STATIC FUNCTION clpfile_read( cFileName )
LOCAL cFileBody := MemoRead( cFileName )
LOCAL aFiles