2013-02-14 23:09 UTC+0100 Viktor Szakats (harbour syenar.net)

* contrib/xhb/hbxml.c
    ! several memory leaks fixed in xhb XML support (TXml class)
    ; Patch by Jose F. Gimenez. Thank you very much.

  * utils/hbmk2/hbmk2.prg
    ! fixed -request= to work again for Harbour pcode dynlibs
      regression from: 2010-07-31 13:44 UTC+0200 Viktor Szakats
         8fb774ef80
      (sf.net's SVN web browser is effectively unusable anymore
      for certain parts of Harbour, their server cannot handle
      the history)
    ! fixed missing detection for the proper bcc linker option
      that disables warning for duplicate symbols in executables

  * extras/template/hbtpl.hbp
    + added example to link dynlib against other Harbour (pcode) dynlib
      Disclaimer: There is no "generic support" for this,
      only a set of conventions used throughout Harbour
      contrib .hbc files, contrib/make.hbs and
      $hb_pkg_dynlib.hbm (aka utils/hbmk2/pkg_dynl.hbm)

  * extras/*/*.hbx
    * refreshed
This commit is contained in:
Viktor Szakats
2013-02-14 22:13:42 +00:00
parent 3e433c3a18
commit 78e179c85c
12 changed files with 77 additions and 46 deletions

View File

@@ -10,6 +10,31 @@
* Change, ! Fix, % Optimization, + Addition, - Removal, ; Comment
*/
2013-02-14 23:09 UTC+0100 Viktor Szakats (harbour syenar.net)
* contrib/xhb/hbxml.c
! several memory leaks fixed in xhb XML support (TXml class)
; Patch by Jose F. Gimenez. Thank you very much.
* utils/hbmk2/hbmk2.prg
! fixed -request= to work again for Harbour pcode dynlibs
regression from: 2010-07-31 13:44 UTC+0200 Viktor Szakats
https://github.com/vszakats/harbour/commit/8fb774ef80d2d89a25c65fe5bf824e134392318e
(sf.net's SVN web browser is effectively unusable anymore
for certain parts of Harbour, their server cannot handle
the history)
! fixed missing detection for the proper bcc linker option
that disables warning for duplicate symbols in executables
* extras/template/hbtpl.hbp
+ added example to link dynlib against other Harbour (pcode) dynlib
Disclaimer: There is no "generic support" for this,
only a set of conventions used throughout Harbour
contrib .hbc files, contrib/make.hbs and
$hb_pkg_dynlib.hbm (aka utils/hbmk2/pkg_dynl.hbm)
* extras/*/*.hbx
* refreshed
2013-02-14 15:08 UTC+0100 Viktor Szakats (harbour syenar.net)
* utils/hbmk2/hbmk2.*.po
* utils/hbmk2/hbmk2.prg

View File

@@ -431,6 +431,9 @@ static MXML_STATUS mxml_attribute_read( MXML_REFIL * ref, PHB_ITEM pDoc, PHB_ITE
pDest->pName = hb_itemPutCL( pDest->pName, mxml_sgs_extract( buf_name ), iLenName );
pDest->pValue = hb_itemPutCL( pDest->pValue, mxml_sgs_extract( buf_attrib ), iLenAttrib );
mxml_sgs_destroy( buf_name );
mxml_sgs_destroy( buf_attrib );
return MXML_STATUS_OK;
}
@@ -876,6 +879,7 @@ static void mxml_node_read_data( MXML_REFIL * ref, PHB_ITEM pNode, PHB_ITEM doc,
hb_itemPutCL( pItem, buf, iPos );
hb_objSendMsg( pNode, "_CDATA", 1, pItem );
hb_itemRelease( pItem );
MXML_DELETOR( buf );
}
static MXML_STATUS mxml_node_read_name( MXML_REFIL * ref, PHB_ITEM pNode, PHB_ITEM doc )
@@ -960,6 +964,7 @@ static MXML_STATUS mxml_node_read_name( MXML_REFIL * ref, PHB_ITEM pNode, PHB_IT
pItem = hb_itemPutCL( NULL, buf, iPos );
hb_objSendMsg( pNode, "_CNAME", 1, pItem );
hb_itemRelease( pItem );
MXML_DELETOR( buf );
return MXML_STATUS_OK;
}
@@ -1043,12 +1048,10 @@ static void mxml_node_read_directive( MXML_REFIL * ref, PHB_ITEM pNode, PHB_ITEM
}
else
{
MXML_DELETOR( buf );
hbxml_set_doc_status( ref, doc, pNode, ref->status, ref->error );
}
}
else
MXML_DELETOR( buf );
MXML_DELETOR( buf );
}
static void mxml_node_read_pi( MXML_REFIL * ref, PHB_ITEM pNode, PHB_ITEM doc )
@@ -1124,9 +1127,9 @@ static void mxml_node_read_pi( MXML_REFIL * ref, PHB_ITEM pNode, PHB_ITEM doc )
}
else
{
MXML_DELETOR( buf );
hbxml_set_doc_status( ref, doc, pNode, ref->status, ref->error );
}
MXML_DELETOR( buf );
}
static void mxml_node_read_tag( MXML_REFIL * ref, PHB_ITEM pNode, PHB_ITEM doc,
@@ -1239,10 +1242,10 @@ static void mxml_node_read_comment( MXML_REFIL * ref, PHB_ITEM pNode, PHB_ITEM d
}
else
{
MXML_DELETOR( buf );
hbxml_set_doc_status( ref, doc, pNode, ref->status, ref->error );
}
hb_itemRelease( pItem );
MXML_DELETOR( buf );
}
static void mxml_node_read_cdata( MXML_REFIL * ref, PHB_ITEM pNode, PHB_ITEM pDoc )
@@ -1396,9 +1399,9 @@ static void mxml_node_read_cdata( MXML_REFIL * ref, PHB_ITEM pNode, PHB_ITEM pDo
}
else
{
MXML_DELETOR( buf );
hbxml_set_doc_status( ref, pDoc, pNode, ref->status, ref->error );
}
MXML_DELETOR( buf );
}
hb_itemRelease( pItem );
}
@@ -2203,18 +2206,12 @@ static MXML_STATUS mxml_sgs_append_string( MXML_SGS * sgs, char * s )
static char * mxml_sgs_extract( MXML_SGS * sgs )
{
char * ret;
sgs->buffer[ sgs->length ] = 0;
if( sgs->allocated > sgs->length + 1 )
ret = ( char * ) MXML_REALLOCATOR( sgs->buffer, sgs->length + 1 );
else
ret = sgs->buffer;
sgs->buffer = ( char * ) MXML_REALLOCATOR( sgs->buffer, sgs->length + 1 );
MXML_DELETOR( sgs );
return ret;
return sgs->buffer;
}
/***********************************************************
@@ -2345,13 +2342,9 @@ HB_FUNC( HBXML_NODE_TO_STRING )
out.u.vPtr = ( void * ) sgs;
if( mxml_node_write( &out, pNode, iStyle ) == MXML_STATUS_OK )
{
HB_ISIZ iLen = sgs->length;
char * buffer = mxml_sgs_extract( sgs );
hb_retclen_buffer( buffer, iLen );
}
else
mxml_sgs_destroy( sgs );
hb_retclen_buffer( mxml_sgs_extract( sgs ), sgs->length );
mxml_sgs_destroy( sgs );
}
/**

View File

@@ -6,7 +6,7 @@
*/
/* --------------------------------------------------------------------
* WARNING: Automatically generated code below. DO NOT EDIT!
* WARNING: Automatically generated code below. DO NOT EDIT! (except casing)
* Regenerate using hbmk2 '-hbx=' option.
*/

View File

@@ -6,7 +6,7 @@
*/
/* --------------------------------------------------------------------
* WARNING: Automatically generated code below. DO NOT EDIT!
* WARNING: Automatically generated code below. DO NOT EDIT! (except casing)
* Regenerate using hbmk2 '-hbx=' option.
*/

View File

@@ -6,7 +6,7 @@
*/
/* --------------------------------------------------------------------
* WARNING: Automatically generated code below. DO NOT EDIT!
* WARNING: Automatically generated code below. DO NOT EDIT! (except casing)
* Regenerate using hbmk2 '-hbx=' option.
*/

View File

@@ -6,7 +6,7 @@
*/
/* --------------------------------------------------------------------
* WARNING: Automatically generated code below. DO NOT EDIT!
* WARNING: Automatically generated code below. DO NOT EDIT! (except casing)
* Regenerate using hbmk2 '-hbx=' option.
*/

View File

@@ -6,7 +6,7 @@
*/
/* --------------------------------------------------------------------
* WARNING: Automatically generated code below. DO NOT EDIT!
* WARNING: Automatically generated code below. DO NOT EDIT! (except casing)
* Regenerate using hbmk2 '-hbx=' option.
*/

View File

@@ -6,7 +6,7 @@
*/
/* --------------------------------------------------------------------
* WARNING: Automatically generated code below. DO NOT EDIT!
* WARNING: Automatically generated code below. DO NOT EDIT! (except casing)
* Regenerate using hbmk2 '-hbx=' option.
*/

View File

@@ -6,7 +6,7 @@
*/
/* --------------------------------------------------------------------
* WARNING: Automatically generated code below. DO NOT EDIT!
* WARNING: Automatically generated code below. DO NOT EDIT! (except casing)
* Regenerate using hbmk2 '-hbx=' option.
*/

View File

@@ -27,3 +27,10 @@ corec.c
${hb_name}.hbx
$hb_pkg_dynlib.hbm
$hb_pkg_install.hbm
# NOTE: Uncomment if you want to link against a dynamic Harbour contrib lib
# (hbct in this example)
# {hbdyn&hb_dynsuffix}-env:_HB_DYNSUFF=${hb_dynsuffix}
# {hbdyn&!hb_dynsuffix}-env:_HB_DYNSUFF=_dll
# {hbdyn}-request=__HBEXTERN__HBCT__
# {hbdyn}hbct.hbc

View File

@@ -6,7 +6,7 @@
*/
/* --------------------------------------------------------------------
* WARNING: Automatically generated code below. DO NOT EDIT!
* WARNING: Automatically generated code below. DO NOT EDIT! (except casing)
* Regenerate using hbmk2 '-hbx=' option.
*/

View File

@@ -5866,20 +5866,22 @@ FUNCTION hbmk( aArgs, nArgTarget, /* @ */ lPause, nLevel )
/* Create list of requested symbols */
array := {}
IF l_cMAIN != NIL
/* NOTE: Request this function to generate link error, rather
than starting with the wrong (default) function. */
AAdd( array, Upper( iif( Left( l_cMAIN, 1 ) == "@", SubStr( l_cMAIN, 2 ), l_cMAIN ) ) )
ENDIF
IF hbmk[ _HBMK_cGT ] != NIL
/* Always request default GT first */
AAdd( array, "HB_GT_" + Upper( SubStr( hbmk[ _HBMK_cGT ], 3 ) ) )
ENDIF
FOR EACH tmp IN hbmk[ _HBMK_aGT ]
IF hbmk[ _HBMK_cGT ] == NIL .OR. !( Upper( SubStr( hbmk[ _HBMK_cGT ], 3 ) ) == Upper( SubStr( tmp, 3 ) ) )
AAdd( array, "HB_GT_" + Upper( SubStr( tmp, 3 ) ) )
IF ! lHBMAINDLLP
IF l_cMAIN != NIL
/* NOTE: Request this function to generate link error, rather
than starting with the wrong (default) function. */
AAdd( array, Upper( iif( Left( l_cMAIN, 1 ) == "@", SubStr( l_cMAIN, 2 ), l_cMAIN ) ) )
ENDIF
NEXT
IF hbmk[ _HBMK_cGT ] != NIL
/* Always request default GT first */
AAdd( array, "HB_GT_" + Upper( SubStr( hbmk[ _HBMK_cGT ], 3 ) ) )
ENDIF
FOR EACH tmp IN hbmk[ _HBMK_aGT ]
IF hbmk[ _HBMK_cGT ] == NIL .OR. !( Upper( SubStr( hbmk[ _HBMK_cGT ], 3 ) ) == Upper( SubStr( tmp, 3 ) ) )
AAdd( array, "HB_GT_" + Upper( SubStr( tmp, 3 ) ) )
ENDIF
NEXT
ENDIF
AEval( hbmk[ _HBMK_aREQUEST ], {| tmp | AAdd( array, tmp ) } )
/* Build C stub */
@@ -5890,10 +5892,13 @@ FUNCTION hbmk( aArgs, nArgTarget, /* @ */ lPause, nLevel )
'#include "hbapi.h"' + Chr( 10 ) +;
"" + Chr( 10 )
IF ( ! Empty( array ) .OR. l_cCMAIN != NIL ) .AND. ! lHBMAINDLLP
IF ! Empty( array ) .OR. ( l_cCMAIN != NIL .AND. ! lHBMAINDLLP )
AEval( array, {| tmp, i | array[ i ] := FuncNameEncode( tmp ) } )
AEval( array, {| tmp | cFile += "HB_FUNC_EXTERN( " + tmp + " );" + Chr( 10 ) } )
IF l_cCMAIN != NIL
IF l_cCMAIN != NIL .AND. ! lHBMAINDLLP
IF ! Empty( array )
cFile += "" + Chr( 10 )
ENDIF
@@ -5905,7 +5910,7 @@ FUNCTION hbmk( aArgs, nArgTarget, /* @ */ lPause, nLevel )
cFile += "void _hb_lnk_ForceLink_hbmk( void )" + Chr( 10 )
cFile += "{" + Chr( 10 )
AEval( array, {| tmp | cFile += " HB_FUNC_EXEC( " + tmp + " );" + Chr( 10 ) } )
IF l_cCMAIN != NIL
IF l_cCMAIN != NIL .AND. ! lHBMAINDLLP
IF ! Empty( array )
cFile += "" + Chr( 10 )
ENDIF
@@ -7336,7 +7341,8 @@ STATIC PROCEDURE AAddWithWarning( hbmk, aArray, cOption, aParam, lNew )
"-Wl,--allow-multiple-definition", ; /* gcc */
"muldefs", ; /* ld '-z muldefs' */
"force:multiple", ; /* msvc, pocc, watcom */
"w-dpl" } /* bcc */
"w-dup" , ; /* bcc */
"w-dpl" } /* bcc (for libs) */
IF AScan( sc_aWarning, {| tmp | Lower( tmp ) $ Lower( cOption ) } ) > 0
_hbmk_OutErr( hbmk, hb_StrFormat( I_( "Warning: Dangerous low-level option not recommended: %1$s" ), ParamToString( aParam ) ) )