diff --git a/ChangeLog.txt b/ChangeLog.txt index b0667a719b..83f3ffa076 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -10,6 +10,34 @@ * Change, ! Fix, % Optimization, + Addition, - Removal, ; Comment */ +2013-06-04 14:20 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl) + * contrib/gtqtc/gtqtc1.cpp + * added workaround for missing MT synchronization in QT for XLIB + QT was designed to use screen widgets only in main thread so + it's only workaround which helps but I cannot guaranti + + * contrib/hbmzip/mzip.c + * workaround for wrong st_mtime type in struct stat on android + + * src/rtl/hbsocket.c + * do not check if IPPROTO_IP is defined, on some platforms like + android it's only enum type. Warning if it exploits some problems + on some seldom used platforms/compilers then please report it. + + * src/vm/hvm.c + * minor + + * package/mpkg_ver.sh + * do not use bash extensions + + * package/harbour-wce.spec.in + * package/harbour-win.spec.in + * package/harbour.spec + * package/mpkg_rpm.sh + * package/mpkg_rpm_wce.sh + * package/mpkg_rpm_win.sh + * removed bash from dependencies list + 2013-06-03 16:45 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl) * src/rtl/hbtoken.c + added support for passing token parser parameters as bit field number. diff --git a/contrib/gtqtc/gtqtc1.cpp b/contrib/gtqtc/gtqtc1.cpp index 86c1174e72..c70b2fa9ac 100644 --- a/contrib/gtqtc/gtqtc1.cpp +++ b/contrib/gtqtc/gtqtc1.cpp @@ -56,6 +56,23 @@ static HB_GT_FUNCS SuperTable; #define HB_GTQTC_GET(p) ( ( PHB_GTQTC ) HB_GTLOCAL( p ) ) + +#ifndef HB_QT_NEEDLOCKS +# if defined( HB_OS_UNIX ) +# define HB_QT_NEEDLOCKS +# endif +#endif + +#ifdef HB_QT_NEEDLOCKS +# include "hbthread.h" + static HB_CRITICAL_NEW( s_qtcMtx ); +# define HB_QTC_LOCK() do { hb_threadEnterCriticalSection( &s_qtcMtx ) +# define HB_QTC_UNLOCK() hb_threadLeaveCriticalSection( &s_qtcMtx ); } while( 0 ) +#else +# define HB_QTC_LOCK() do {} while( 0 ) +# define HB_QTC_UNLOCK() do {} while( 0 ) +#endif + static QApplication * s_qtapp = NULL; /* *********************************************************************** */ @@ -1537,7 +1554,9 @@ static void hb_gt_qtc_setWindowFlags( PHB_GTQTC pQTC, Qt::WindowFlags flags, HB_ currFlags &= ~flags; pQTC->qWnd->setWindowFlags( currFlags ); + HB_QTC_LOCK(); pQTC->qWnd->show(); + HB_QTC_UNLOCK(); } static void hb_gt_qtc_setWindowState( PHB_GTQTC pQTC, Qt::WindowStates state, HB_BOOL fSet ) @@ -1550,7 +1569,9 @@ static void hb_gt_qtc_setWindowState( PHB_GTQTC pQTC, Qt::WindowStates state, HB currState &= ~state; pQTC->qWnd->setWindowState( currState ); + HB_QTC_LOCK(); pQTC->qWnd->show(); + HB_QTC_UNLOCK(); } static void hb_gt_qtc_initWindow( PHB_GTQTC pQTC, HB_BOOL fCenter ) @@ -1577,7 +1598,9 @@ static void hb_gt_qtc_createConsoleWindow( PHB_GTQTC pQTC ) hb_gt_qtc_initWindow( pQTC, HB_FALSE ); + HB_QTC_LOCK(); pQTC->qWnd->show(); + HB_QTC_UNLOCK(); pQTC->qWnd->update(); } @@ -1735,10 +1758,12 @@ static int hb_gt_qtc_ReadKey( PHB_GT pGT, int iEventMask ) { int iKey; + HB_QTC_LOCK(); if( pQTC->qEventLoop ) pQTC->qEventLoop->processEvents( QEventLoop::AllEvents ); else QApplication::processEvents( QEventLoop::AllEvents ); + HB_QTC_UNLOCK(); if( hb_gt_qtc_getKeyFromInputQueue( pQTC, &iKey ) ) return iKey; diff --git a/contrib/hbmzip/mzip.c b/contrib/hbmzip/mzip.c index 32de1e9a12..4402c9c631 100644 --- a/contrib/hbmzip/mzip.c +++ b/contrib/hbmzip/mzip.c @@ -759,6 +759,7 @@ static int hb_zipStoreFile( zipFile hZip, int iParamFileName, int iParamZipName, { struct stat statbuf; struct tm st; + time_t ftime; char * pszFree; if( stat( hb_fsNameConv( szFileName, &pszFree ), &statbuf ) == 0 ) @@ -784,10 +785,11 @@ static int hb_zipStoreFile( zipFile hZip, int iParamFileName, int iParamZipName, ( ( statbuf.st_mode & S_IWUSR ) ? 0x00800000 : 0 ) | ( ( statbuf.st_mode & S_IRUSR ) ? 0x01000000 : 0 ); + ftime = statbuf.st_mtime; # if defined( HB_HAS_LOCALTIME_R ) - localtime_r( &statbuf.st_mtime, &st ); + localtime_r( &ftime, &st ); # else - st = *localtime( &statbuf.st_mtime ); + st = *localtime( &ftime ); # endif zfi.tmz_date.tm_sec = st.tm_sec; diff --git a/package/harbour-wce.spec.in b/package/harbour-wce.spec.in index 869647f46f..817fd2b51b 100644 --- a/package/harbour-wce.spec.in +++ b/package/harbour-wce.spec.in @@ -32,8 +32,8 @@ License: GPL (plus exception) Group: Development/Languages URL: http://harbour-project.org/ Source: harbour-%{version}.src.tar.gz -BuildPrereq: gcc binutils bash -Requires: gcc binutils bash sh-utils cegcc-mingw32ce harbour = %{?epoch:%{epoch}:}%{version}-%{release} +BuildPrereq: gcc binutils +Requires: gcc binutils sh-utils cegcc-mingw32ce harbour = %{?epoch:%{epoch}:}%{version}-%{release} Provides: %{name} BuildRoot: /tmp/%{name}-%{version}-root diff --git a/package/harbour-win.spec.in b/package/harbour-win.spec.in index 0adb3b9878..43750ccd83 100644 --- a/package/harbour-win.spec.in +++ b/package/harbour-win.spec.in @@ -32,8 +32,8 @@ License: GPL (plus exception) Group: Development/Languages URL: http://harbour-project.org/ Source: harbour-%{version}.src.tar.gz -BuildPrereq: gcc binutils bash -Requires: gcc binutils bash sh-utils harbour = %{?epoch:%{epoch}:}%{version}-%{release} +BuildPrereq: gcc binutils +Requires: gcc binutils sh-utils harbour = %{?epoch:%{epoch}:}%{version}-%{release} Provides: %{name} BuildRoot: /tmp/%{name}-%{version}-root diff --git a/package/harbour.spec b/package/harbour.spec index b98eb95008..88026afce0 100644 --- a/package/harbour.spec +++ b/package/harbour.spec @@ -92,8 +92,8 @@ License: GPL (plus exception) Group: Development/Languages URL: http://harbour-project.org/ Source: %{name}-%{version}.src.tar.gz -BuildPrereq: gcc binutils bash %{!?_without_curses: ncurses-devel} %{!?_without_gpm: gpm-devel} -Requires: gcc binutils bash sh-utils %{name}-lib = %{?epoch:%{epoch}:}%{version}-%{release} +BuildPrereq: gcc binutils %{!?_without_curses: ncurses-devel} %{!?_without_gpm: gpm-devel} +Requires: gcc binutils sh-utils %{name}-lib = %{?epoch:%{epoch}:}%{version}-%{release} Provides: %{name} harbour lib%{name}.so BuildRoot: /tmp/%{name}-%{version}-root diff --git a/package/mpkg_rpm.sh b/package/mpkg_rpm.sh index ddbdbe0a25..464d696a2f 100755 --- a/package/mpkg_rpm.sh +++ b/package/mpkg_rpm.sh @@ -12,7 +12,7 @@ test_reqrpm() rpm -q --whatprovides "$1" >/dev/null 2>&1 } -NEED_RPM="make gcc binutils bash" +NEED_RPM="make gcc binutils" FORCE="" diff --git a/package/mpkg_rpm_wce.sh b/package/mpkg_rpm_wce.sh index 7e51f4ce0b..58af23fcb4 100755 --- a/package/mpkg_rpm_wce.sh +++ b/package/mpkg_rpm_wce.sh @@ -38,7 +38,7 @@ hb_ver=`get_hbver` hb_verstat=`get_hbverstat` [ -n "${hb_verstat}" ] || hb_verstat="0" -NEED_RPM="make gcc binutils bash cegcc-mingw32ce" +NEED_RPM="make gcc binutils cegcc-mingw32ce" FORCE="" diff --git a/package/mpkg_rpm_win.sh b/package/mpkg_rpm_win.sh index 82195ba677..29d4fae4ec 100755 --- a/package/mpkg_rpm_win.sh +++ b/package/mpkg_rpm_win.sh @@ -59,7 +59,7 @@ hb_ver=`get_hbver` hb_verstat=`get_hbverstat` [ -n "${hb_verstat}" ] || hb_verstat="0" -NEED_RPM="make gcc binutils bash" +NEED_RPM="make gcc binutils" FORCE="" diff --git a/package/mpkg_ver.sh b/package/mpkg_ver.sh index 332865d5cd..040b850161 100755 --- a/package/mpkg_ver.sh +++ b/package/mpkg_ver.sh @@ -3,14 +3,13 @@ # --------------------------------------------------------------- # Copyright 2003 Przemyslaw Czerpak # small set of functions used by Harbour scripts -# warning: some bash extensions are used # # See COPYING.txt for licensing terms. # --------------------------------------------------------------- get_hbver() { - hb_rootdir="${1-..}" + if [ -z "$hb_rootdir" ]; then hb_rootdir=".."; fi FVER="${hb_rootdir}/include/hbver.h" MAJOR=`sed -e '/HB_VER_MAJOR/ !d' -e 's/[^0-9]*\([^ ]*\).*/\1/g' "${FVER}"` MINOR=`sed -e '/HB_VER_MINOR/ !d' -e 's/[^0-9]*\([^ ]*\).*/\1/g' "${FVER}"` @@ -20,7 +19,7 @@ get_hbver() get_hbverstat() { - hb_rootdir="${1-..}" + if [ -z "$hb_rootdir" ]; then hb_rootdir=".."; fi FVER="${hb_rootdir}/include/hbver.h" VERSTAT=`sed -e '/HB_VER_STATUS/ !d' -e 's/[^\"]*\"\([^\"]*\).*/\1/g' "${FVER}"` echo "${VERSTAT}" diff --git a/src/rtl/hbsocket.c b/src/rtl/hbsocket.c index ca18887b2b..7e0587d833 100644 --- a/src/rtl/hbsocket.c +++ b/src/rtl/hbsocket.c @@ -2650,7 +2650,7 @@ int hb_socketSetMulticast( HB_SOCKET sd, int af, const char * szAddr ) { if( af == HB_SOCKET_AF_INET ) { -#if defined( IP_ADD_MEMBERSHIP ) && defined( IPPROTO_IP ) +#if defined( IP_ADD_MEMBERSHIP ) /* && defined( IPPROTO_IP ) */ struct ip_mreq mreq; int ret; diff --git a/src/vm/hvm.c b/src/vm/hvm.c index ffd87423d3..3af9481dd8 100644 --- a/src/vm/hvm.c +++ b/src/vm/hvm.c @@ -5442,7 +5442,7 @@ static void hb_vmArrayDim( HB_USHORT uiDimensions ) /* generates an uiDimensions static void hb_vmHashGen( HB_SIZE nElements ) /* generates an nElements Hash and fills it from the stack values */ { HB_STACK_TLS_PRELOAD - PHB_ITEM pHash, pKey, pVal; + PHB_ITEM pHash; int iPos; HB_TRACE( HB_TR_DEBUG, ( "hb_vmHashGen(%" HB_PFS "u)", nElements ) ); @@ -5454,8 +5454,8 @@ static void hb_vmHashGen( HB_SIZE nElements ) /* generates an nElements Hash and iPos = - ( int ) nElements; while( iPos ) { - pKey = hb_stackItemFromTop( iPos++ ); - pVal = hb_stackItemFromTop( iPos++ ); + PHB_ITEM pKey = hb_stackItemFromTop( iPos++ ); + PHB_ITEM pVal = hb_stackItemFromTop( iPos++ ); if( HB_IS_HASHKEY( pKey ) ) hb_hashAdd( pHash, pKey, pVal ); else