diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 0d7cab16c0..f2d0f2d694 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -10,6 +10,10 @@ * Change, ! Fix, % Optimization, + Addition, - Removal, ; Comment */ +2012-11-21 19:06 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl) + * harbour/src/vm/cmdarg.c + ! fixed GetModuleFileName() usage + 2012-11-21 17:50 UTC+0100 Viktor Szakats (harbour syenar.net) * src/rdd/hsx/hsx.c * src/rtl/gtxwc/gtxwc.c diff --git a/harbour/src/vm/cmdarg.c b/harbour/src/vm/cmdarg.c index 008f6b9c43..2386a67547 100644 --- a/harbour/src/vm/cmdarg.c +++ b/harbour/src/vm/cmdarg.c @@ -99,13 +99,19 @@ void hb_winmainArgVBuild( void ) { LPCTSTR lpCmdLine, lpSrc; LPTSTR * lpArgV; - LPTSTR lpDst, lpArg; + LPTSTR lpDst, lpArg, lpModuleName; HB_SIZE nSize, nModuleName; int iArgC; HB_BOOL fQuoted; + /* NOTE: MAX_PATH used intentionally instead of HB_MAX_PATH */ + lpModuleName = ( LPTSTR ) HB_WINARG_ALLOC( ( MAX_PATH + 1 ) * sizeof( TCHAR ) ); + nModuleName = GetModuleFileName( NULL, lpModuleName, MAX_PATH + 1 ); + if( nModuleName ) + nModuleName++; + HB_WINARG_FREE( lpModuleName ); + lpCmdLine = GetCommandLine(); - nModuleName = GetModuleFileName( NULL, NULL, 0 ); lpArgV = NULL; lpDst = NULL; nSize = 0; @@ -254,7 +260,7 @@ void hb_winmainArgVFree( void ) { if( s_argv == s_lpArgVStr ) s_argv = NULL; - HB_WINARG_FREE( ( void * ) s_lpArgVStr ); + HB_WINARG_FREE( s_lpArgVStr ); s_lpArgVStr = NULL; } #else @@ -262,7 +268,7 @@ void hb_winmainArgVFree( void ) s_argv = NULL; #endif - HB_WINARG_FREE( ( void * ) s_lpArgV ); + HB_WINARG_FREE( s_lpArgV ); s_lpArgV = NULL; s_argc = 0; }