From 53b0ef468d16972f36b4e4fcf2202f06bee73d11 Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Wed, 19 Aug 2009 04:29:31 +0000 Subject: [PATCH] 2009-08-19 06:29 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) * contrib/hbtip/thtml.prg ! Fixed hang in 'OEMTOHTML( "&" )'. Reported on c.l.xhb. Fix based on Eduardo Fernandes suggestion, although done a little differently and extended to avoid new RTE. --- harbour/ChangeLog | 6 ++++++ harbour/contrib/hbtip/thtml.prg | 30 +++++++++++++++++------------- 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 9b5ce0bd8a..e243b168fd 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -17,6 +17,12 @@ past entries belonging to author(s): Viktor Szakats. */ +2009-08-19 06:29 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) + * contrib/hbtip/thtml.prg + ! Fixed hang in 'OEMTOHTML( "&" )'. Reported on c.l.xhb. + Fix based on Eduardo Fernandes suggestion, although done + a little differently and extended to avoid new RTE. + 2009-08-19 06:16 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) * utils/hbmk2/hbmk2.prg + Added wininet syslib to std lib list for win platform. diff --git a/harbour/contrib/hbtip/thtml.prg b/harbour/contrib/hbtip/thtml.prg index 716132afc8..d7cdcb48f6 100644 --- a/harbour/contrib/hbtip/thtml.prg +++ b/harbour/contrib/hbtip/thtml.prg @@ -1302,14 +1302,14 @@ STATIC FUNCTION __ParseAttr( parser ) ENDIF parser:p_end := parser:p_pos - parser:p_pos -- + parser:p_pos-- EXIT CASE '"' CASE "'" lIsQuoted := .T. parser:p_end := parser:p_pos - parser:p_pos ++ + parser:p_pos++ nStart := parser:p_pos @@ -1317,7 +1317,7 @@ STATIC FUNCTION __ParseAttr( parser ) // empty value "" hHash[ aAttr[ 1 ] ] := "" parser:p_end := parser:p_pos - parser:p_pos -- + parser:p_pos-- ELSE P_SEEKI( parser, cChr ) nEnd := parser:p_pos @@ -4360,7 +4360,7 @@ FUNCTION AnsiToHtml( cAnsiText ) nEnd := parser:p_pos cText := SubStr( parser:p_str, nStart, nEnd-nStart ) - DO WHILE ! ( ( cChr := P_NEXT( parser ) ) $ "; " ) .AND. parser:p_pos != 0 + DO WHILE ! ( ( cChr := P_NEXT( parser ) ) $ "; " ) .AND. ! Empty( cChr ) .AND. parser:p_pos != 0 ENDDO SWITCH cChr @@ -4368,9 +4368,9 @@ FUNCTION AnsiToHtml( cAnsiText ) // HTML character entity found nStart := nEnd nEnd := parser:p_pos+1 - cEntity := SubStr( parser:p_str, nStart, nEnd-nStart ) + cEntity := SubStr( parser:p_str, nStart, nEnd - nStart ) parser:p_end := parser:p_pos - parser:p_pos ++ + parser:p_pos++ EXIT CASE " " // "&" character found @@ -4381,16 +4381,20 @@ FUNCTION AnsiToHtml( cAnsiText ) nStart := nEnd cHtmlText += "&" + SubStr( cText, 2 ) LOOP + OTHERWISE + cEntity := NIL ENDSWITCH - nStart := parser:p_pos - FOR EACH aEntity IN s_aHtmlAnsiEntities - IF aEntity[ 1 ] $ cText - cText := StrTran( cText, aEntity[ 1 ], aEntity[ 2 ] ) - ENDIF - NEXT + IF cEntity != NIL + nStart := parser:p_pos + FOR EACH aEntity IN s_aHtmlAnsiEntities + IF aEntity[ 1 ] $ cText + cText := StrTran( cText, aEntity[ 1 ], aEntity[ 2 ] ) + ENDIF + NEXT - cHtmlText += cText + cEntity + cHtmlText += cText + cEntity + ENDIF ENDDO cText := SubStr( parser:p_str, nStart )