* src/rdd/usrrdd/rdds/arrayrdd.prg
! formatting/cleanup, removed unncessary e"" string
! replaced '='/'!=' operator on strings with ==. It's most probably
still broken, but at least now consistently so.
* harbour/src/rdd/usrrdd/rdds/arrayrdd.prg
* Cleaned windows xhb debug using HB_TRACE() function and removed old
lines
* harbour/ChangeLog
* formatted previous log entry
* harbour/src/rdd/dbfnsx/dbfnsx1.c
! fixed index header verification when index is loaded.
In Harbour DBFNSX and DBFNTX automatically switch to different
internal format when HB_DBFLOCK_HB64 is used. In this format
they store in index files page numbers instead of page offsets
what effectively increase maximal file size to 4TB (from 4GB).
* harbour/debian/changelog
* harbour/debian/rules
* changed version number to 3.1.0-1
* removed HB_BUILD_DEBUG=yes
* use 'dh_prep' instead of deprecated 'dh_clean -k'
* harbour/src/rtl/gttrm/gttrm.c
! fixed my C&P typo in HB_TRACE() message
+ harbour/doc/locks.txt
+ added descirption of DBF locking schemes
* harbour/include/hbrdddbf.h
* modified DB_DBFLOCK_HB64 locking scheme
- extended RLOCK/FLOCK area from 2^31-2 to 2^32-2
it effectively changes maximum number of records in this
locking scheme to 4'294'967'294
- use COMIX like hyper locking mode
it should increase performance
Warning: INCOMPATIBLE!
all applications using DB_DBFLOCK_HB64 locking mode should
be updated - it is not safe to concurrently access the
same files using programs compiled with older Harbour
versions and current one.
* renamed the following DB_DBFLOCK_* macros:
DB_DBFLOCK_CLIP to DB_DBFLOCK_CLIPPER
DB_DBFLOCK_CL53 to DB_DBFLOCK_COMIX
DB_DBFLOCK_CL53EXT to DB_DBFLOCK_HB32
* added new locking scheme: DB_DBFLOCK_CLIPPER2
This locking scheme is designed to replicate _real_ locking scheme
used by Cl*pper applications linked with NTXLOCK2.OBJ
It's different then the documented one.
; Now Harbour supports the following locking schemes:
DB_DBFLOCK_CLIPPER 1 default Clipper locking scheme
DB_DBFLOCK_COMIX 2 COMIX and CL53 DBFCDX hyper locking scheme
DB_DBFLOCK_VFP 3 [V]FP, CL52 DBFCDX, SIx3 SIXCDX, CDXLOCK.OBJ
DB_DBFLOCK_HB32 4 Harbour hyper locking scheme for 32bit file API
DB_DBFLOCK_HB64 5 Harbour hyper locking scheme for 64bit file API
DB_DBFLOCK_CLIPPER2 6 extended Clipper locking scheme NTXLOCK2.OBJ
* harbour/include/hbrdddbf.h
* harbour/include/hbrddntx.h
* harbour/include/hbrddnsx.h
* harbour/include/hbrddcdx.h
* harbour/src/rdd/dbf1.c
* harbour/src/rdd/dbfntx/dbfntx1.c
* harbour/src/rdd/dbfnsx/dbfnsx1.c
* harbour/src/rdd/dbfcdx/dbfcdx1.c
+ finished support for COMIX like hyper locking.
This modification enables periodical switch to write locks
by readers to eliminate starvation effect on some systems
where many readers can completely block writer.
By default readers use exclusive lock once per each 16 operations.
+ added optional support for delayed index write locks (flush locks)
in hyper locking modes.
If index RDD can use such locks then write lock can be divided into
two parts:
1) block writers and new readers (write lock)
[prepare index modifications in memory]
2) wait for old readers still active (flush lock)
[write modifications to index file]
[release locks]
This mode reduces time when index is locked exclusively increasing
reader performance and also increase writer performance because
waiting for active readers it can prepare index modifications in
memory.
* harbour/src/rdd/dbfcdx/dbfcdx1.c
+ added support for delayed index write locks (flush locks) in DBFCDX
* harbour/src/rtl/filebuf.c
* automatically change write file locks to read locks when file is
open in readonly mode in POSIX systems.
* harbour/src/vm/classes.c
* disabled inheriting of class variables values from ancestor classes
when new class is dynamically created.
Warning: INCOMPATIBLE!
This modification is not backward compatible and can
interact with some existing code which has to be updated
for new behavior.
==> ChangeLog <==
2011-11-17 09:46 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/src/rtl/filebuf.c
! fixed silly typo in previous fix: 2011-09-02 14:03 UTC+0200
! fixed race condition in code emulating DOS/Windows file lock
behavior in POSIX systems. The problem could be exploited by
Harbour MT programs using the same files in many threads in
more then on process. Many thanks to Zsolt for the info and
test code example.
[TOMERGE 3.0]
* src/rtl/hbini.prg
+ keep order of ini items.
Patch by Qatan.
* modified to use HB_HKEEPORDER() instead of HB_HSETORDER()
to be consistent along the patch and because former is the
native, faster synonym.
* harbour/src/rtl/gtxwc/gtxwc.c
+ added support for selecting text with mouse and coping it
to clipboard buffer.
By default this functionality is disabled and can be enabled by:
hb_gtInfo( HB_GTI_SELECTCOPY, .t. )
Marked mode is started by LEFT MOUSE button pressed with SHIFT key
and stopped when LEFT MOUSE button is released. Selected text is
highlight in similar way to GTWVT.
* harbour/src/rtl/gtxwc/gtxwc.c
! create initial console window in fullscreen mode if user called
hb_gtInfo( HB_GTI_ISFULLSCREEN, .T. )
before window was created
* harbour/tests/gtkeys.prg
* modified to optionally test different CPs some extended GT keys
* harbour/src/rtl/gtxwc/gtxwc.c
* return HB_GTI_RESIZEMODE_ROWS for HB_GTI_RESIZEMODE
HB_GTI_RESIZEMODE_FONT is not supported yet by GTXWC
+ added support for HB_GTI_ISFULLSCREEN and HB_GTI_ALTENTER
They work like in GTWVT with HB_GTI_RESIZEMODE_FONT.
Some window managers may not support it so please test it.
+ added support for HB_K_CLOSE, HB_K_GOTFOCUS and HB_K_LOSTFOCUS
like in GTWVT
* harbour/src/rtl/gtxwc/gtxwc.c
+ added support for 'Root' input context for systems where
XLib supports Xutf8LookupString()
It should resolve problems with national characters and
some local signs supported by different keyboards
(i.e. 1/2, euro sign, itp.)
Please test it with different systems.
* harbour/src/rtl/gtxwc/gtxwc.h
* harbour/src/rtl/gtxwc/gtxwc.c
* minor code cleanup
* harbour/src/rtl/gttrm/gttrm.c
+ added support for HB_GTI_WINTITLE for XTerm compatible terminals
* harbour/src/rtl/hbdyn.c
* added dummy assignment to pacify warning
* harbour/src/rtl/hbsocket.c
* added workaround for EREFUSED == ECONNREFUSED.
It has to be tested with different OS-es
* src/rtl/tget.prg
! fixed RTE when setting :picture to NIL for
N and C types in some certain rare circumstantances.
The :picture setting operation is ignored in such case,
since the internally stored original value is not known.
Tested OK against CA-Cl*pper 5.3, though maybe it's
possible to refine this even further with more test cases.
* tests/rto_get.prg
+ added test case for RTE reported by Quique
! fixed warnings
* harbour/src/vm/fm.c
! do not enable by default DLMALLOC in WinCE builds.
It was the source of problems reported by Jarek with file read/write
operation in WinCE builds. Now it should work correctly - please
make some tests with real devices - I used emulator only.
* harbour/contrib/hbwin/wapi_wingdi_font.c
+ added WAPI_ADDFONTRESOURCE() and WAPI_REMOVEFONTRESOURCE()
* harbour/src/rtl/gtwvt/gtwvt.c
! fixed infinite recursive loops and GPF in WinCE builds caused by
SetWindowPos()/ProcessMessages() when WM_SIZE message is processed.
Now GTWVT can be used again in WinCE builds.
* harbour/src/compiler/hbmain.c
! take starting line number from PP to eliminate possible
synchronization problem
* harbour/src/compiler/hbcmplib.c
! minor fix in meta filename detecting
* harbour/include/hbpp.h
* harbour/include/hbcomp.h
* harbour/src/pp/ppcore.c
* harbour/src/compiler/hbmain.c
* harbour/src/compiler/hbcmplib.c
+ added support for setting starting line number in code compiled
from memory buffer
! removed unnecessary EF_CANDEFULT flag from recently added
compiler RTE
* harbour/include/hbpp.h
* harbour/include/hbcomp.h
* harbour/include/hbcompdf.h
* harbour/src/compiler/hbmain.c
* harbour/src/compiler/hbcomp.c
* harbour/src/compiler/hbgenerr.c
+ added support for redirecting compiler warning and error messages
to user function.
* harbour/src/compiler/hbcmplib.c
+ optional support for generating RTE in HB_COMPILE*() functions
on compile errors.
* harbour/src/rtl/transfrm.c
% eliminated hb_charUpper() called for picture clauses and minor
code optimization
* harbour/src/rtl/gtapi.c
! fixed typo in function name: hb_gtBoxS() was wrongly redirected
to HB_GTSELF_BOXD() instead of HB_GTSELF_BOXS()
* harbour/include/hbapicdp.h
* harbour/src/rtl/cdpapi.c
- removed hb_cdpchrcmp() function and HB_CDP_ISBYTESORT() macro
+ added new function:
const HB_UCHAR * hb_cdpGetSortTab( PHB_CODEPAGE cdp );
it returns binary sort table or NULL if given CP uses more
complicated sorting algorithm.
* harbour/include/hbrddcdx.h
* harbour/src/rdd/dbfcdx/dbfcdx1.c
% use hb_cdpGetSortTab() to take binary sort table used by WA CP
instead of creating new one for each WA.
* src/rtl/tget.prg
! If the cursor is located in the middle of a word, ::wordLeft() no
places it at the beginning of this word, the cursor jumps to the
previous one.
! If the cursor is located at the end of a word ::wordRight() no places
it at the beginning of the next word skipping only the spaces between
them, the next word is skipped entirely.
; Patch and description by Juan Gálvez
* harbour/src/pp/ppcore.c
! fixed few problems with line numbering and code using
extended codeblocks
[TOMERGE 3.0]
* harbour/src/pp/pplib2.c
! fixed typo in comment
* harbour/src/rtl/gtxwc/gtxwc.c
! fixed window activation just after SETMODE() and before any output
! fixed mouse methods to not activate console window but only connect
to XServer if necessary
! fixed internal error reported when HB_GTI_RESIZABLE was called before
creating console window
% do not allocate colors in HB_GTI_PALETTE if there is no console window
* harbour/src/rtl/gtwvt/gtwvt.c
* harbour/src/rtl/gtxwc/gtxwc.c
+ allow to use HB_GTI_ONLINE to check if terminal window exists
* harbour/src/rtl/gtxwc/gtxwc.c
! protection against possible GPF when XServer is not accessible
and user calls HB_GTI_FONTSEL
* do not activate terminal window by HB_GTI_FONTSEL
* use maximal logical width of character instead of maximal size
of character rectangle to calculate width of character cell
* harbour/include/hbgtcore.h
* harbour/src/rtl/gtclip.c
! fixed possible random data settings by hb_gt_winapi_setClipboard()
! fixed possible memory leak in hb_gt_winapi_setClipboard()
+ added new C function for WIN32 builds:
HB_BOOL hb_gt_winapi_setClipboardRaw( HB_UINT uFormat,
void * pData, HB_SIZE nSize );
* harbour/include/hbtrace.h
* harbour/src/common/hbtrace.c
+ added new C function:
const char * hb_tracemode( const char * szNewMode );
it can be called with "a" or "w" parameter to set open
mode for newly created by hb_tracefile() log files.
* harbour/src/rtl/trace.c
+ added new PRG function:
HB_TRACEMODE( [<cNewMode>] ) -> <cPrevMode>
* harbour/src/rtl/hbrandom.c
! fixed HB_RANDOMINTMAX() to return correct value for new PRNG
used by HB_RANDOM() and HB_RANDOMINT() functions
! fixed missing protection against initialization of PRNG seed with 0
* modified the range of hb_random_num() results from ( 0 , 1 ) to
[ 0, 1 )
% added alternative PRN calculation for builds with 64bit integers
! allocate separate PRNG seed for each thread (MT support)
* modified default initialization of PRNG:
if PRNG is not initialized or after HB_RANDOMSEED( 0 ) then
first call to HB_RANDOM() or HB_RANDOMINT() activates
initialization which generates new seed using current time
in milliseconds and HVM stack address (for MT modes).
I used such method because it nicely simplifies code and is
backward compatible with previous implementation.
If someone needs repeatable results from HB_RANDOM() and
HB_RANDOMINT() then he should initialize PRNG seed for each
thread with some fixed value i.e.:
HB_RANDOMSEED( 123456789 )
; Many thanks to Viktor and Mindaugas for their help.
* harbour/contrib/xhb/xhbole.prg
! added missing SETGET in method declaration.
Many thanks to Juan Galvez for locating the problem.
* include/hbapi.h
* src/rtl/hbrandom.c
+ Changed Harbour's core pseudo-random generator from STD C rand()/srand()
to superior implementation. New implementation fixed MT problems with
the standard solution on certain targets (f.e. win/mingw, win/msvc)
Based on Przemek's patch which is in turn based on algorithm by
Steve Park: http://www.cs.wm.edu/~va/software/park/ suggested by me
on the list. Further modifications:
* HB_RANDOMINTMAX() adapted. Checkme, I'm not sure about this.
* HB_RANDOMSEED() updated.
+ headers cleaned, copyright updated, note added
+ automatic seed defaulting like in previous version (checkme,
we may as well drop it, though it will be create incompatibility)
; per-thread seed didn't work well for me (even with new engine)
so I didn't implement it.
+ added proto for hb_random_seed()
* src/rtl/teditor.prg
! fixed following issue: in MEMOEDIT() insert mode the word wrap inserts
an additional, not typed space in the new line [when typing at EOL at the
moment of word wrap - vszakats]. The space is inserted at the place, where
the word wrap takes place.
Report and patch provided by Dr.Claudia Neumann. Many thanks.
(with my formatting: indenting, tab/EOL-space removal)
* contrib/hbqt/qtcore/hbqt_pointer.cpp
! fixed to avoid non-MT compatible strtok() C RTL call.
Many thanks to Carlos Bacco for the patch.
(with my minor formatting 'if (' -> 'if(', 'while (' -> 'while( ')
NOTE: Please continue to avoid strtok() usage in any further Harbour patches,
it is avoided for good reason.
* INSTALL
+ added another (this is the 3rd!) mention to use unmodified ("vanilla")
3rd party packages (especially to make implib generation to work).
* minor updates
* contrib/hbrun/hbrun.hbp
+ added another TOFIX to latest patch, about HB_HAS_ZLIB_LOCAL usage,
which has to be eliminated.
* ChangeLog
+ added UPDATE to previous ChangeLog entry
* harbour/src/rtl/filesys.c
* harbour/src/rtl/hbproces.c
! use hb_fsOsError() instead of errno which can be overwritten by
by hb_fsSetIOError()
* harbour/tests/gtxfnt.prg
% hb_processRun() instead of hb_processOpen()/fread()/hb_processClose()
+ set font attributes: HB_GTI_FONTA_FIXMETRIC, HB_GTI_FONTA_CLRBKG,
HB_GTI_FONTA_DRAWBOX
* harbour/include/hbgtinfo.ch
+ added new hb_gtInfo() action: HB_GTI_FONTATTRIBUTE and attributes:
HB_GTI_FONTA_FIXMETRIC, HB_GTI_FONTA_CLRBKG, HB_GTI_FONTA_DRAWBOX
* harbour/src/rtl/gtxwc/gtxwc.c
+ implemented HB_GTI_FONTATTRIBUTE.
Now user can make:
hb_gtInfo( HB_GTI_FONTATTRIBUTE, HB_GTI_FONTA_FIXMETRIC + ;
HB_GTI_FONTA_CLRBKG + HB_GTI_FONTA_DRAWBOX )
and use also fonts with broken metrics.