* include/hbrddcdx.h
* src/rdd/dbfcdx/dbfcdx1.c
+ added support for large index files over 4GB length.
These are slightly modified CDX indexes which stores index page numbers
instead of index page offsets inside index file. This trick increase
maximum index files size from 2^32 (4GB) to 2^41 (2TB). This index
format is enabled automatically when DB_DBFLOCK_HB64 is used. This is
the same behavior as in DBFNTX and DBFNSX for which I added support
for large indexes (up to 4TB) few years ago.
Warning: new CDX indexes are not backward compatible and cannot be
read by other systems or older [x]Harbour versions.
If you try to open new indexes using older [x]Harbour RDDs
then RTE "DBFCDX/1012 Corruption detected" is generated.
When current Harbour *DBFCDX/SIXCDX RDD open index file
then it automatically recognize type of index file so it
will work correctly with both versions without any problem.
In short words: People using DB_DBFLOCK_HB64 should remember
that after reindexing with new Harbour applications old ones
cannot read new CDX indexes.
; In next step I plan to add support for user defined page size in CDX
index files.
* doc/xhb-diff.txt
* added information about extended CDX format to section "NATIVE RDDs"
* src/rdd/dbfcdx/dbfcdx1.c
* src/rdd/dbfnsx/dbfnsx1.c
* src/rdd/dbfntx/dbfntx1.c
* disable record readahead buffer used during indexing when only
one record can be stored inside
! generate RTE when data cannot be read into record readahead buffer
during indexing
* src/rtl/gtxwc/gtxwc.c
! fixed size of picture shown by HB_GTI_DISPIMAGE
! fixed indexes used to restore text data after
hb_gtInfo( HB_GTI_DISPIMAGE, "" )
* src/Makefile
! fixed to only include compilable GTs in Harbour dynlib
(borrowed from Viktor's fork)
* src/rtl/gtxwc/gtxwc.c
+ redraw screen area when empty string is passed as image body
to HB_GTI_DISPIMAGE, i.e.:
hb_gtInfo( HB_GTI_DISPIMAGE, "" [, <aCords> ] )
If <aCords> is not given then whole screen is refreshed.
* src/vm/arrays.c
! added protection against internal error when ACOPY() is executed
with the same array passed as source and target without any indexes
which can force item move. Now ACOPY() works like in Cl*pper.
* contrib/hbamf/amfdec.c
! simplified and fixed datetime decoding.
Please verify what is the correct time base value.
Used by current and commented previous wrong code:
1970-01-01 00:00:00 => 210866803200000
or:
1969/12/31 12:00:00 => 210866760000000
Testing please remember about UTC offset.
* contrib/hbbz2/core.c
! fixed declaration for bz_internal_error()
* config/win/msvc.mk
* utils/hbmk2/hbmk2.prg
* disabled -nologo option used with resource compiler in MSVC builds.
Compiler version is not enough to detect supported parameters when
Platform SDK rc.exe is used.
* include/hbdefs.h
* use strict aliasing friendly conversions in MSC builds which support
intrinsic version of _byteswap_*() functions.
It should also pacify some of MSC warnings.
* include/hbdefs.h
* src/rdd/dbffpt/dbffpt1.c
* minor formatting
* contrib/gtwvg/wvgcore.c
! fixed HANDLE to LONG casting - it's bug in 64 bit builds
* include/hbcomp.h
* include/hbcompdf.h
* src/compiler/hbmain.c
* src/compiler/harbour.y
* src/compiler/harbour.yyc
* replaced 'char' type holder with 'HB_BYTE' - this is part of never
finished code which is completely dummy in current compiler and above
modification is only to pacify warnings which are real bugs in existing
implementation. I do not plan to modify or fix this code. I'll remove
it working on fully functional strong typing implementation.
* src/compiler/harbour.y
* src/macro/macro.y
* disabled 4244 and 4702 warnings in MSVC builds - this warnings are
from code generated by bison and they are out of our direct control
* src/compiler/harbour.yyc
* src/compiler/harbour.yyh
* src/macro/macro.yyc
* src/macro/macro.yyh
* regenerated
* src/3rd/tiff/tiff.dif
* src/3rd/tiff/tiffconf.h
* do not redefine O_* macros in all *nix builds
* src/compiler/harbour.yyc
* src/compiler/harbour.yyh
* src/macro/macro.yyc
* src/macro/macro.yyh
* regenerated with bison 3.0.2.
* src/rtl/hbcom.c
! fixed compilation with OpenWatcom for Linux
* src/rtl/hbsocket.c
* pacified warning in OpenWatcom Linux builds
* src/rtl/hbjson.c
* own code for conversion integer numbers
* contrib/gtqtc/gtqtc1.cpp
+ added support for decoded image data passed to HB_GTI_DISPIMAGE like
in GTXWC. Supported formats are RGB32, RGB16 and MONO bitmap.
Unlike GTXWC GTQTC rescales bitmap to passed cords.
* src/rdd/wafunc.c
! fixed very bad bug introduced in previous modification - in fact
potential problem existed from the beginning anyhow recent modification
allow to exploit it in all complex index expressions.
* src/rdd/wafunc.c
% use dynamic symbol pointer to find field index
* src/rdd/workarea.c
* set default maximum field size to HB_SYMBOL_NAME_LEN characters
(by default in Harbour builds HB_SYMBOL_NAME_LEN is 63)
Some RDDs may set longer names but it will be respected only by
FieldName() function and in all other cases only HB_SYMBOL_NAME_LEN
characters is significant for Harbour so such decision should be
well thought by RDD authors because it may confuse users.
Warning: all 3-rd party RDDs which need to force shorter names
should update uiMaxFieldNameLength in their NEW() method
just after SUPER_NEW() call, i.e. like in core DBF RDD.
! respect uiMaxFieldNameLength when new fields are added
* src/rdd/dbf1.c
* set maximum field size to 10 characters
* contrib/rddsql/sqlbase.c
- removed code used to set uiMaxFieldNameLength to HB_SYMBOL_NAME_LEN.
Now it's default field length value for each RDD unless it does not
change it.
* contrib/rddads/ads1.c
* minor modification in adsFieldName()
* contrib/hbwin/wapi_winbase.c
+ added support for FORMAT_MESSAGE_ALLOCATE_BUFFER and 6-th <nSize>
parameter to wapi_FormatMessage() function. The 6-th <nSize> parameter
has higher priority then size of string passed in the 5-th parameter.
! fixed potential memory leak
* contrib/sddsqlt3/core.c
* decalre default size for numeric, blob and any fields
larger enough to store data after COPY TO
* decalre default size for string fields to at least 10
* some simplifications
* contrib/sddsqlt3/core.c
* set default number of decimal places in float SQLITE3 values
to _SET_DECIMAL. If user needs different number of decimal places
when he converts number to strings then he can set it explicitly.
Harbour does not change values of float point number retrieved
from SQLITE3 and always returns original data.
* do not set default length of numeric values for to string conversions.
* contrib/sddsqlt3/core.c
* removed dummy break statements
* contrib/xhb/xhbmvinf.c
! store memvar values instead of references to memvar variables in
array returned by __mvSymbolInfo()
* include/hbapi.h
* src/common/hbstr.c
+ added new function hb_strAtI() - it works like hb_strAt() but it
ignores the case of the ASCII characters
* src/rtl/ati.c
* renamed local static function hb_strAtI() to s_strAtI() to avoid
conflict with new public hb_strAtI() function.
* contrib/xhb/xhbat.c
- removed local static function hb_strAtI() - current public hb_strAtI()
is compatible with it.
* contrib/sddsqlt3/core.c
+ added new code to set column type giving the highest priority SQLITE3
declared column types.
Please test - I haven't made any.
! do not cast floating point values to integer
* contrib/hbwin/hbwin.hbx
* contrib/hbwin/win_prn2.c
! fixed win_printerGetDefault() in Win9x builds - fix and some
formatting and casting borrowed from Viktor's fork.
+ added new PRG function:
win_PrintDataRaw( <cPrinter>, <cData> [, <cDocName>] )
-> <nBytesPrinted>
It's similar to win_PrintFileRaw() but sends to given printer passed
in 2-nd parameter <cData> instead of file body.
On error it returns negative value.
* cleaned casting and minor formatting
* src/rtl/gtxwc/gtxwc.c
+ added support for HB_GTI_DISPIMAGE. It's slightly modified code sent
by Rolf to Harbour devel list. In comparison to original version it
supports <nDepth> as 4-th item of array with bitmap description to use
with some other GTs which can support different color depths or can
make conversion. It also supports bitmaps passed as strings.
% slightly improved HB_GFX_GETPIXEL
* contrib/rddads/ads1.c
! extended and fixed CANDEFAULT error processing for data width error
* contrib/rddads/adsx.c
! fixed typo in index creation code related to subindexing
* contrib/gtqtc/gtqtc1.cpp
* src/rtl/gtwvt/gtwvt.c
* contrib/gtwvg/gtwvgd.c
* use hb_vmRequestQuit() instead of hb_vmRequestCancel() when
close event is received - it is GTXWC compatible behavior and
allows to execute user EXIT PROCEDUREs.
Please also remember that all ALWAYS sections are executed too
regardles of requested event (QUIT, BREAK, CANCEL)
* src/rtl/gtwvt/gtwvt.c
! fixed processing WM_QUERYENDSESSION and WM_ENDSESSION messages.
Now GTWVT applications do not interrupt system shutdown process
and do not close application if other process interrupted it.
In the future we can also add support for blocking system shutdown
operation, i.e. using HB_GTI_CLOSEMODE as bitfield, anyhow before
we begin to change it we should agree final version.
! applied Rolf's patch which fixes circle and ellipse cords.
I haven't tested it and I hope that they were verified visually
on the screen - some of Windows GUI functions do not access
border points.
* contrib/gtwvg/hbgtwvg.ch
! Fixed: overlapping HB_GRI_* constants which were added in GTWVT
later that these were defined in GTWVG.
* contrib/gtwvg/gtwvg.h
+ Borrowed some structure members from GTWVT.
* contrib/gtwvg/gtwvgd.c
+ Added: GTWVT specific HB_GTI_CLOSEMODE implementation.
+ Added: to respect array to hb_gtInfo( HB_GTI_SETPOS_XY ) call.
% Synchronized: 'X' button behavior as per GTWVT.
; Note: 'X' button behavior differs from GTWVT if HB_GTI_CLOSEMODE == 0.
For other mode it is identical to GTWVT.
* src/common/hbdate.c
! fixed typo in hb_timeUTCOffset() - this code was used in POSIX
systems which do not support gmtime_r()/localtime_r() - many
thanks to Teo.
* src/debug/dbgentry.c
* src/debug/debugger.prg
* prepare the code to return error object when evaluated expression
fails as proposed by Teo. This functionality is not enabled yet.
I'm waiting for information about current public debugger API used
in 3-rd party projects before I decide to change it.
* include/hbdebug.ch
+ added HB_DBG_* constant values for arrays returned by __dbg*()
functions
* include/hbset.h
* src/vm/set.c
+ added new C function: hb_setGetItem();
* src/debug/dbgentry.c
* use HB_DBG_* constant values
+ added new debugger function: __dbgGetSETs() - it returns array with
all HVM SETs: { { <nSet>, <cSetName>, <xSetValue> }, ... }
% optimized hb_dbgActivateCallStackArray() and hb_dbgActivateModuleArray()
* src/debug/debugger.prg
* use HB_DBG_* constant values
* use __dbgGetSETs() for "System Settings" window
+ added support for Harbour SET extensions
* ChangeLog.txt
* updated description for structure of array returned
by __dbgGetBreakPoints()
* contrib/hbmysql/tmysql.prg
* added support for nFlags in TMySQLServer constructor as
suggested by Fernando Athayde
* src/rtl/gtcgi/gtcgi.c
% replaced hb_cdpnDup() with hb_cdpnDup3() to eliminate unnecessary
memory block duplicating when translation is not activated.
* src/vm/itemapi.c
* removed old ugly hack used to mark infinite or undefined double
value using double item length field. The code which created such
item have been eliminated many years ago.
* use HB_DEFAULT_WIDTH instead of hardcoded 99 to force numeric value
length recalculation.
* src/vm/estack.c
* always set NIL in item allocated by hb_stackAllocItem() when it's
used as function. In internal macro this step is missing so allocated
item still may contain other simple value. All places in HVM where
hb_stackAllocItem() is used are safe for such situation (I've just
verified them again).
It fixes problem reported by Mindaugas when hb_stackAllocItem()
was used inside DBFFPT as temporary item and could unintentionally
change memo type if allocated item containes previous numeric
value in valid memo type range.
* src/rdd/wafunc.c
* src/vm/hvm.c
* src/vm/memvars.c
* clear passed item before RTE when accessed memvar or field does not
exists
* src/vm/hashfunc.c
! set default value before decoding 2-nd logical parameter in
hb_HAutoAdd() function. It fixes ambiguity reported by Mindaugas.
* src/debug/dbgentry.c
* moved code used to create callstack array to separate
function hb_dbgActivateCallStackArray()
* changed function order to avoid some forward declarations
* src/debug/dbgwa.prg
! fixed position of some item in F6-WA window
* include/hbvm.h
* src/vm/hvm.c
+ added new HVM function: hb_vmTryEval()
This function tries to execute given block or function
inside BEGIN SEQUENCE / RECOVER oErr / END SEQUENCE statement.
It return HB_TRUE if it was executed without any problem and
HB_FALSE otherwise. Result or RTE object is stored in 1-st
parameter and should be freed by the caller using hb_itemRelese()
* src/debug/dbgentry.c
! use hb_vmTryEval() instead of hb_itemDo() to evaluate trace point
expressions. Now debugger does not crash when user sets tracepoint
expression which cannot be evaluated in executed context.
! allow to use expressions with more then 99 variables
! added missing protections against GPF when wrong parameters are
passed to __dbg*() functions
* keep original trace and watch point expression for farther
processing
* replaced IS_IDENT_*() macros with HB_IS*IDCHAR()
+ added new debuger function:
__dbgGetWatchPoints() -> <aWatchTracePoints>
<aWatchTracePoints> contains subarrays describing trace and watch
points:
{ <cExpression>, <lTracePoint>, <lValid>, <xResult> }
It was the last function necessary to extract all information
about debugged context from core internals. Now it's possible
to create fully functional standalone debugger without storing
and updating locally any information about debugger state.
All such information can be accessed at any time using __dbg*()
functions.
It should greatly simplify creating 3-rd party debuggers like
HWDebug or HBQTDebug.
* src/debug/debugger.prg
! fixed callstack window updating during tracing and stepping.
Tanks to Rolf for reporting the problem.
* contrib/hbct/ctwin.c
! fixed typo in window area checking when current window is 0
It fixes problem with debugger reported by Rolf.
* src/debug/dbgentry.c
% few optimizations
! added few protections against GPF when wrong parameters are passed
! fixed missing support for symbol, date and timestamp values in
tracepoints
+ added __dbgCntWatch()
* src/rtl/filesys.c
* src/rtl/hbproces.c
* pacified warning in more aggressive way for newer GCC versions
* include/harbour.hbx
* refreshed
* include/harbour.hbx
* src/rtl/val.c
+ added new function: hb_Val( <cStr> [, <nLen> ] ) -> <nVal>
it works like a val but set length for numeric result to passed string
length or <nLen> parameter if is large enough.
* src/rtl/tget.prg
! use hb_Val() instead of Val() for numeric GETs to replicate Clipper
behavior for pictures longer then 10 characters.
* src/rtl/itemseri.c
* minor update in comments
* contrib/hbct/ctwin.c
* src/rtl/hbgtcore.c
! fixed GTCTW window handle save/restore on debugger activation
I broke in 107b36e847
Thanks to Rolf for the info and patch.
* contrib/hbziparc/ziparc.prg
* synced with Viktor's branch.
This code should contain Rolf fixes. Please test.
* src/rtl/gtwin/gtwin.c
+ added support for disabling [x] button of console window in older
MS-Windows versions which do not have GetConsoleWindow() function,
i.e. Win9x/ME