On Mon, 17 Aug 2009, Itamar Lins wrote:
> I found the problem.
> Colision again Hwgui function.
> Piece of code hwgui\source\drawtext.c
> #ifndef __XHARBOUR__
> HB_FUNC( OEMTOANSI )
> {
> char *buffer = hb_parc( 1 );
> OemToChar( buffer, buffer );
> hb_retc( buffer );
> }
> HB_FUNC( ANSITOOEM )
> {
> char *buffer = hb_parc( 1 );
> CharToOem( buffer, buffer );
> hb_retc( buffer );
> }
> #else
> HB_FUNC( OEMTOANSI )
> {
> PHB_ITEM pString = hb_param( 1, HB_IT_STRING );
>
> if( pString )
> {
> DWORD ulLen = pString->item.asString.length;
> char *pszDst = ( char * ) hb_xgrab( ulLen + 1 );
>
> OemToCharBuff( ( LPCSTR ) pString->item.asString.value,
> ( LPSTR ) pszDst, ulLen );
>
> hb_retclenAdopt( pszDst, ulLen );
> }
> else
> {
> hb_retc( "" );
> }
> }
> HB_FUNC( ANSITOOEM )
> {
> PHB_ITEM pString = hb_param( 1, HB_IT_STRING );
> if( pString )
>
> {
> DWORD ulLen = pString->item.asString.length;
> char *pszDst = ( char * ) hb_xgrab( ulLen + 1 );
>
> CharToOemBuff( ( LPCSTR ) pString->item.asString.value,
> ( LPSTR ) pszDst, ulLen );
>
> hb_retclenAdopt( pszDst, ulLen );
> }
> else
> {
> hb_retc( "" );
> }
> }
> #endif
Both Harbour and xHarbour version of above functions are broken.
Use for this code instead:
HB_FUNC_EXTERN( HB_OEMTOANSI );
HB_FUNC_EXTERN( HB_ANSITOOEM );
HB_FUNC( OEMTOANSI )
{
HB_FUNC_EXEC( HB_OEMTOANSI );
}
HB_FUNC( ANSITOOEM )
{
HB_FUNC_EXEC( HB_ANSITOOEM );
}
for both compilers. It will fix also UNICODE build problems.
best regards,
Przemek
_______________________________________________
Harbour mailing list
[email protected]
http://lists.harbour-project.org/mailman/listinfo/harbour