* contrib/rddads/ads1.c
* src/rdd/workarea.c
* generate RTE code when SELF_ADDFIELD() used in SELF_CREATEFIELDS()
(dbCreate() backend) returns HB_FAILURE. It fixes silent dbCreate()
exit when some wrong table structure arrays are passed to this
function.
* src/rdd/dbf1.c
! added protection against too long unicode character and fields defined
in dbCreate() table structure array - fix problem reported by KevinC -
thanks
* change RTE number from EDBF_DATATYPE to EDBF_DATAWIDTH record size is
exceed
+ added additional protection when corrupted table with unicode fields
is open
* include/hbjson.h
* src/rtl/hbjson.c
* changed 3-rd parameter 'HB_BOOL fHuman' in hb_jsonEncode() and
hb_jsonEncodeCP() C functions to 'int iIndent'
char * hb_jsonEncode( PHB_ITEM pValue, HB_SIZE * pnLen,
int iIndent );
char * hb_jsonEncodeCP( PHB_ITEM pValue, HB_SIZE * pnLen,
int iIndent, PHB_CODEPAGE cdp );
Positive iIndent value defines number of spaces used for indenting,
0 disables indenting and -1 means TAB ( ASCII:9 ) indenting.
This modification is binary compatible though in C code using HB_TRUE
as 3-rd parameter it changes indenting from 2 spaces to 1 so please
update the code if it's significant.
+ added optional support for numeric value in 2-nd parameter of
hb_jsonEncode() PRG function. Current syntax is:
hb_jsonEncode( <xValue>, [ <lHuman> | <nIndent> ], [ <cDestCP> ] )
-> <cJSONString>
* contrib/rddads/ads1.c
* minor simplification
* include/hbapigt.h
* formatting
* *
* partial sync with the 3.4 fork codebase. These are the things
synces for the most part:
- copyright headers
- grammar/typos in comments and some readmes
- comment/whitespace/decorations
- variable scoping in C files
- DO CASE/SWITCH and some other alternate syntax usage
- minimal amount of human readable text in strings
- minor code updates
- HB_TRACE() void * casts for pointers and few other changes to
avoid C compiler warnings
- various other, minor code cleanups
- only Harbour/C code/headers were touched in src, utils, contrib,
include. No 3rd party code, no make files, and with just a few
exceptions, no 'tests' code was touched.
- certain components were not touched were 3.4 diverged too much
already, like f.e. hbmk2, hbssl, hbcurl, hbexpat
- the goal was that no actual program logic should be altered by
these changes. Except some possible minor exceptions, any such
change is probably a bug in this patch.
It's a massive patch, if you find anything broken after it, please
open an Issue with the details. Build test was done on macOS.
The goal is make it easier to see what actual code/logic was changed
in 3.4 compared to 3.2 and to make patches easier to apply in both
ways.
* src/rtl/dirscan.prg
! fixed type in hb_DirRemoveAll() result - it always returned .F.
* src/rtl/itemseri.c
! fixed internal error when HB_SERIALIZE_COMPRESS is passed to
hb_Serialize() and ZLIB was not linked with application
* src/rtl/tpersist.prg
! fixed deserialization of multidimensional arrays - thanks to Peter
* contrib/rddads/ads1.c
* pacified 'fall through' warnings
* contrib/rddads/ads1.c
+ added support for "VarCharFox" and "VarBinaryFox" field types.
! fixed accessing "VarChar" fields longer then their size defined in
table header (rest of longer fields is stored in memo file)
! do not reduce size of data stored in "VarChar" fields to the size
of region allocated for them in table record. Such fields allows
to store up to 64000 bytes and rest is saved in memo file.
! fixed RTE when strings longer then 64000 bytes are assigned to
"VarChar" fields.
! fixed RTE when strings longer then declared field size are assigned
to Unicode character fields (i.e. "nChar" or "C:U")
! fixed possible use of memcpy() with the same source and destination
addresses
* contrib/rddads/ads1.c
* src/rdd/workarea.c
* simplified the code and eliminated wrong /* fallthrough */ comments
inside case block reported by Viktor
* include/hbcomp.h
* src/compiler/hbmain.c
* removed not longer necessary calls to hb_compExprLstDealloc()
* src/compiler/hbcomp.c
! do not generate internal error when nested expression deallocation
is activated
* contrib/rddads/ads1.c
! fixed bad typo which effectively completely broke
AdsTestRecLocks( .t. ) mode
- extras/hbdoc/_tmplate.prg
- extras/hbdoc/hbdoc.ch
* extras/hbdoc/_genbase.prg
* extras/hbdoc/_genhtml.prg
* extras/hbdoc/_gentxt.prg
* extras/hbdoc/_genxml.prg
* extras/hbdoc/hbdoc.hbp
* extras/hbdoc/hbdoc.prg
+ improve readability by paragraphs spacing in DESCRIPTION sections
+ improve divs in section content for better control via CSS
+ improve readability of tables with borders and
header hightlights
* change default output to single-file
+ add support for the old <table>/<fixed> tags in html output until they
are converted to something better
+ add support for <b>/<b>, <URL:url>, Markdown `inline code`,
_emphasis_, *bold*, character escaping \*, line separators ===/---,
and fenced code using triple backticks.
Very limited and not with standard compliance or completeness
in mind, just to be able to use some basic formatting.
; TODO: Markdown URL and lists, then replace all <b>,<URL>,<fixed>
markup with Markdown equivalents in docs
+ better localization support
+ add support for one file per component output via -output-component
cmdline option
% assemble output in memory and write to disk in a single call
% integrate external header
% replace almost all internal arrays with hashes
% replace self-modifying class and macro expansion with
regular hashes
% internal cleanups
% switch to simpler method for sort weighting
+ merge category/subcategory values into tag list. It
means they will be now be included in the output
% cleanup/fix/simplify value expansions for 'compliance',
'status' and 'platform' fields
% cleanup the way output engines are handles internally
+ add support for 'TAGS' entry to replace/extend the rigid and
ambiguous CATEGORY/SUBCATEGORY-based categorization. It is meant
to be a comma-separated list of freeform tags, possibly with a set
of standard common tags, with the freedom to use anything else deemed
useful by component/doc authors.
+ add footer showing the build date of the doc
+ include Git revision the doc is based on, link to the relevant
source tree version.
* various code refactoring steps to avoid unnecessary
classes, arrays, macro evaluation, and using undocumented
functions
% various HTML5 tag improvements and optimizations
+ load HBX file contents and lookup each referenced
symbol. Emit warning in verbose mode, if docs refers
to non-existing one.
(this replaces slow and broken logic based on hbextern.ch)
+ use core hbdoc API to load the documentation instead
of locally rolled logic
* always show those content problems that are considered
fatal and the input doc to be skipped
+ filter docs to English language by default
+ add ability to choose language using a command-line option
! fix faulty validation logic that resulted in
erronously skipping certain entries
+ identify docs' 'component' property automatically
! fix to not eat empty lines from examples
+ convert "see also" items to links (this works correctly only
in single file output mode)
! fix to not break words (f.e. URLs) when outputting HTML
% use shorter class names
! fix invalid element ID generated
! fix RTE when trying to create output by category
% delete dummy "HTML2" output mode
* convert more ASCII chars to better Unicode equivalents
+ mark more text as code automatically
* drop MS-DOS compatibility
* src/rtl/hbdoc.prg
! fix filling '_LANG' property with the correct value
* switch to use LF instead of CRLF in the field contents
* contrib/hbct/doc/en/*.txt
* contrib/hbgd/doc/en/hbgd.txt
* contrib/hbgt/doc/en/hbgt.txt
* contrib/hbmisc/doc/en/dates2.txt
* contrib/hbnf/doc/en/*.txt
* contrib/rddads/doc/en/adsfuncs.txt
* doc/en/*.txt
* cleanups and fixes
! casing
! fix to always delimit "see also" items with comma (",")
! fix various casing issues and old typos
! various fixes after detecting them using updated hbdoc
! eliminate/fix various rare/unnecessary/invalid field values
! move some embedded docs from hbdoc into their respective
doc sources
! fix a typo
* use backtick
* replace code copyright with reference to COPYING.txt (=LICENSE.txt)
+ mark tables without a header or with double height header
; Above patches come from 3.4 fork commits below:
2016-10-26 12:43 UTC+0200 Viktor Szakats (vszakats users.noreply.github.com)
2016-10-26 12:34 UTC+0200 Viktor Szakats (vszakats users.noreply.github.com)
2016-10-26 12:20 UTC+0200 Viktor Szakats (vszakats users.noreply.github.com)
2016-10-26 03:21 UTC+0200 Viktor Szakats (vszakats users.noreply.github.com)
2016-10-26 02:47 UTC+0200 Viktor Szakats (vszakats users.noreply.github.com)
2016-10-25 15:05 UTC+0200 Viktor Szakats (vszakats users.noreply.github.com)
2016-10-25 14:51 UTC+0200 Viktor Szakats (vszakats users.noreply.github.com)
2016-10-25 14:30 UTC+0200 Viktor Szakats (vszakats users.noreply.github.com)
2016-10-25 13:19 UTC+0200 Viktor Szakats (vszakats users.noreply.github.com)
2016-10-25 12:35 UTC+0200 Viktor Szakats (vszakats users.noreply.github.com)
2016-10-25 11:47 UTC+0200 Viktor Szakats (vszakats users.noreply.github.com)
2016-10-25 02:48 UTC+0200 Viktor Szakats (vszakats users.noreply.github.com)
2016-10-24 22:26 UTC+0200 Viktor Szakats (vszakats users.noreply.github.com)
2016-10-24 18:35 UTC+0200 Viktor Szakats (vszakats users.noreply.github.com)
2016-10-24 17:58 UTC+0200 Viktor Szakats (vszakats users.noreply.github.com)
2016-10-24 16:12 UTC+0200 Viktor Szakats (vszakats users.noreply.github.com)
2016-10-24 15:44 UTC+0200 Viktor Szakats (vszakats users.noreply.github.com)
2016-10-24 03:36 UTC+0200 Viktor Szakats (vszakats users.noreply.github.com)
2016-10-24 02:40 UTC+0200 Viktor Szakats (vszakats users.noreply.github.com)
2016-10-24 00:23 UTC+0200 Viktor Szakats (vszakats users.noreply.github.com)
2016-10-23 23:09 UTC+0200 Viktor Szakats (vszakats users.noreply.github.com)
2016-10-23 16:39 UTC+0200 Viktor Szakats (vszakats users.noreply.github.com)
2016-10-23 16:10 UTC+0200 Viktor Szakats (vszakats users.noreply.github.com)
2016-10-23 13:15 UTC+0200 Viktor Szakats (vszakats users.noreply.github.com)
* include/hbapi.h
* include/hbvmpub.h
* removed casting C style casting from commonly used macros
* contrib/gtqtc/gtqtc1.cpp
* use C++ casting instead of C casting
* contrib/rddads/ads1.c
* contrib/rddads/adsx.c
* contrib/rddsql/sqlmix.c
* src/rdd/dbfcdx/dbfcdx1.c
* src/rdd/dbfnsx/dbfnsx1.c
* src/rdd/dbfntx/dbfntx1.c
* src/rdd/dbsql.c
* src/rdd/workarea.c
* cleaned HB_IT_* usage
* contrib/rddads/ads1.c
! fixed typo in low level code of ordDescend() / DBOI_ISDESC,
now ordDescend() should work with ADS* RDDs just like with
native RDDs
* contrib/hbfoxpro/relfunc.c
! fixed typo in Between() function - thanks to Petr Chorney
* src/rtl/gtwvt/gtwvt.c
! added workaround for keyboard drivers which sets CTRL key modifier
flag when only ALTGR is pressed - thanks to Maurizio la Cecilia
* contrib/rddads/ads.ch
+ 64bit server type constants included
* include/dbinfo.ch
* contrib/rddsql/hbrddsql.h
* contrib/rddsql/rddsql.hbc
- contrib/rddsql/hbrddsql.ch
* definitions of SQL related RDDI_*, DBI_* constants moved from RDDSQL
to core code
* include/dbinfo.ch
* contrib/rddsql/sqlbase.c
* RDDI_NEWID renamed to more informative RDDI_INSERTID
* contrib/rddads/ads1.c
* contrib/rddads/adsfunc.c
* contrib/rddads/rddads.h
+ RDDI_CONNECT, RDDI_DISCONNECT implemented. RDDINFO() can be used instead
of RDD specific AdsConnect*() calls
+ other SQL related RDDINFO(), DBINFO() capabilities implemented
+ DBUSEAREA() accepts prefixes "SQL:" and "TABLE:" to indicate if
given table name should be treated as SQL query or table file name.
If these prefixes are omitted, function parameter is treated as table
file name except in case it begins with "SELECT " (compatibility).
* include/hbclass.ch
* disabled DECLARE to not generate ignored by compiler noise in .ppo
files
* src/rdd/dbcmd.c
! allow to use dbSetFilter() with string only parameter without
codeblock - Cl*pper compatibility fix.
Cl*pper allows to set text filter without codeblock. In local
RDDs it effectively does nothing and only dbFilter() returns it
but RDDs with automatic filter optimization like CL53/DBFCDX /
COMIX/ClipMore or RDDs working with remote data base servers
may use only text version of filter and ignore or use with
lower priority the codeblock so Harbour has to work like
Cl*pper here.
* src/rdd/workarea.c
* typo in comment
* contrib/rddads/ads1.c
* do not validate empty text filters
* contrib/rddads/ads1.c
* do not use long type names in array returned by dbStruct() if
corresponding types exist in core code and have their own name
recognized by other RDDs.
Now only one long type name can be returned: "CICHARACTER"
* *
% remove brandings and homepage [1] from copyright header. Pass 1 - using script.
[1] nobody has access to it anymore AFAIK - and it's also just
a redirect since long
! update url in copyright header
; this should make the diff between 3.4 and 3.2 easier to manage
* contrib/rddads/ads1.c
! use AdsSetLongLong() (if available) instead of AdsSetDouble() to not
strip less significant bits from 64bit integer number during conversion
to double
* allow ADS to decide if writing into rowver and modtime fields is legal
instead of generating our own arbitrary RTE
* include/dbinfo.ch
* src/rdd/workarea.c
+ added new dbInfo() action DBI_TRANSREC
It indicates if area is destination table of currently processed COPY TO
or APPEND FROM operation.
* include/hbapirdd.h
* src/rdd/wafunc.c
+ added new C function:
HB_ERRCODE hb_dbTransCounters( LPDBTRANSINFO lpdbTransInfo );
It copies field counters from source into destination table used
in transfer operation.
* src/rdd/dbcmd.c
* src/rdd/wafunc.c
+ call DBI_TRANSREC to inform destination area that record transfer
operation starts and stop. It allows destination RDD to change
rules used for assign to automatically updated fields, i.e. unblock
such operation.
+ call hb_dbTransCounters() to update counters in destination table
after COPY TO operation
* src/rdd/sdf1.c
* src/rdd/delim1.c
* clear AutoInc flag
* src/rdd/dbf1.c
+ allow to set get and set counter for RowVer fields using DBS_COUNTER
action
* return HB_FAILURE for DBS_COUNTER and DBS_STEP if it's not supported
by given field.
+ added support for DBI_TRANSREC - in case of DBF* RDDs it unblocks
writing to automatically updated fields
* contrib/hbodbc/odbc.c
* contrib/hbodbc/sql.ch
* minor formatting to sync with Viktor's branch
+ added missing defines from Viktor's branch
* contrib/rddads/ads.ch
* contrib/rddads/adsfunc.c
+ added AdsStmtSetTableReadOnly( <nMode> ) -> <lSuccess>
(From Viktor's branch: 2015-01-21 18:43 UTC+0100 Viktor Szakats)
+ added ADS_REFRESHCOUNT constant and
AdsGetRecordCount( [<nHandleType:ADS_TABLE>], ;
[<nFilterOption:ADS_RESPECTFILTERS>], @nCount ) -> <nErrorCode>
(From Viktor's branch: 2014-01-19 13:42 UTC+0100 Viktor Szakats)
! fixed connection handle parameter position in AdsDDRemoveTable()
It was 4-th:
AdsDDRemoveTable( <cTableName>, <deleteFile>, , [ <nConnection> ] )
-> <lResult>
Now is 3-rd:
AdsDDRemoveTable( <cTableName>, <deleteFile>, [ <nConnection> ] )
-> <lResult>
(From Viktor's branch: 2014-01-14 23:53 UTC+0100 Viktor Szakats)
* contrib/rddads/rddads.h
+ autodetection support for 11.10
(From Viktor's branch: 2013-12-26 01:22 UTC+0100 Viktor Szakáts)
* contrib/rddads/adsx.c
* use hb_xgrabz()
* formatting
* contrib/rddsql/hbrddsql.h
* contrib/rddsql/sqlbase.c
* added const qualifier to SDD method pointer in SQLBASEAREA
* declare default SDD method table with const qualifier
* added s_ prefix to the name of static variable with SDD methods
% optimized GOHOT() method
* use hb_xgrab() instead of hb_xalloc() to force error when out of memory
* use hb_xgrabz()
* contrib/rddsql/sqlmix.c
* use hb_xgrabz()
* contrib/sddfb/core.c
* added s_ prefix to the name of static variable with SDD methods
% removed unnecessary memset()
% optimized GOTO() method
! fixed very bad typo in record set resizing - for each record 64 dummy
items were added to array with records so finally this array was 64
times longer then necessary.
* contrib/sddmy/core.c
* added s_ prefix to the name of static variable with SDD methods
+ added new field types from from Viktor's branch
* use hb_xgrabz()
% removed redundant comparison to NULL
* contrib/sddoci/core.c
* added s_ prefix to the name of static variable with SDD methods
* check OCI_Initialize() result and generate error if fails
(synced with Viktor's branch)
* minor formatting to sync with Viktor's branch
% removed unnecessary memset()
% optimized GOTO() method
! fixed very bad typo in record set resizing - for each record 64 dummy
items were added to array with records so finally this array was 64
times longer then necessary.
* contrib/sddodbc/core.c
* replaced unnecessary hb_xgrabz() with hb_xgrab()
! fixed very bad typo in record set resizing - for each record 64 dummy
items were added to array with records so finally this array was 64
times longer then necessary.
* contrib/sddpg/core.c
* added s_ prefix to the name of static variable with SDD methods
* use hb_xgrabz()
* contrib/sddsqlt3/core.c
* added s_ prefix to the name of static variable with SDD methods
* minor formatting to sync with Viktor's branch
! fixed memory leak when RTE ESQLDD_STMTALLOC is generated
(fix from Viktor's branch)
% removed unnecessary memset()
! fixed very bad typo in record set resizing - for each record 64 dummy
items were added to array with records so finally this array was 64
times longer then necessary.
* contrib/hbssl/tests/inetssl.prg
* contrib/rddads/ads1.c
* src/rtl/teditor.prg
* formatting of my recent modifications taken from Viktor's branch
* src/common/hbfsapi.c
* src/compiler/complex.c
* formatting
* include/hbset.h
* src/vm/set.c
* src/nortl/nortl.c
+ add new C functions to change HVM set values:
hb_setSetFileCase(), hb_setSetDirCase(), hb_setSetDirSeparator(),
hb_setSetTrimFileName()
* include/hbcomp.h
* include/hbcompdf.h
* src/compiler/cmdcheck.c
* src/compiler/hbmain.c
* src/compiler/ppcomp.c
* src/compiler/genc.c
* src/compiler/hbusage.c
* src/nortl/nortl.c
* rewritten code used to parse command line and environment parameters.
New code is covered by GPL + Harbour exception license.
All parameters are decoded by only one function and whole code is
smaller so it's much easier to modify this code.
! fixed some small bugs and incompatibilities with Cl*pper in parameter
parsing
! fixed -y undocumented (YYDEBUG) switch
- removed -x[<prefix>] set symbol init function name prefix (for .c only)
compiler command line switch
* moved -fn[:[l|u]|-] -fd[:[l|u]|-] -fp[:<char>] and -fs[-] switches
parsing to core compiler library. Now these switches are also works
with compiler library linked with HBMK2.
; TOFIX: HBMK2 ignores -fn/-fd switches and allocates temporary names
which are not compatible with names used later by harbour
compiler when above switches are activated. HBMK2 should
parse parameters and update SET FILECASE / SET DIRCASE before
it creates temporary files.
* src/rdd/workarea.c
+ added support for field flags in dbCreate()/dbStruct().
Flags can be passed in string with field type after ":", i.e.
"C:U"
means Unicode character field.
The following flags are recognized:
"N" - column can store null values
"B" - binary column
"+" - column is autoincrementing
"Z" - column is compressed
"E" - column is encrypted
"U" - column stores Unicode strings
* src/rdd/dbf1.c
+ added support for field flags in core DBF* RDDs.
; In core DBF* RDDs "N", "B", "U" and "+" flags are supported.
When "N" flag is used then special hidden field with NULL bits
is created. Such implementation is compatible with DBF created
by VFP.
* contrib/rddads/ads1.c
+ added support for field flags in ADS* RDDs
! added missing RTE when wrong field types are passed to dbCreate()
; The old format with long field names corresponding to ADS types is
still supported but I had to rewrite this code so please make real
life test and verify me. In few cases I slightly change the code and
now it can be a little bit more restrictive, i.e. typos in "AtutoInc"
field type will be detected (previous code checked only for 1-st
letter "A").
* contrib/rddads/ads1.c
* contrib/rddads/adsfunc.c
* contrib/rddads/rddads.h
+ added support for RDDI_INDEXPAGESIZE in ADI indexes
* src/rdd/dbf1.c
* minor cleanup
* include/hbrddcdx.h
* src/rdd/dbfcdx/dbfcdx1.c
+ added support for long index keys when bigger pages are used.
Now maximum index key size is 4082 for 8192 bytes length index pages.
Indexes are critical for database applications so please make
tests with current code and report problems if you find any.
* contrib/rddads/ads1.c
* contrib/rddads/adsfunc.c
! check if AE_VALUE_OVERFLOW macro exists before use
! fixed memory leak
% use char* instead of UNSIGNED8* to eliminate unnecessary casting
* use HB_IT_EVALITEM instead of HB_IT_BLOCK
* formatting and minor cleanups
* include/hbrddcdx.h
* src/rdd/dbfcdx/dbfcdx1.c
* modifications for longer index keys when bigger pages are used
(work in progress)
* 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/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/rddads/adsx.c
* implemented intermediate index creation in case ADS can process index
FOR or WHILE condition.
Ex., if requested index has WHILE condition supported by server,
but index key expression is not supported (or codeblock is used),
server side index is created using WHILE condition. This intermediate
index later is used to create final index.
This logic increases speed dramatically if WHILE condition was used
to filter a few records from a large database using subindex.
* src/rtl/itemseri.c
! fixed casting for C++ builds
* contrib/rddads/ads1.c
+ use AdsIsNull() function instead of AdsIsEmpty() in DBS_ISNULL
action for ACE library 9.0 or newer.
* contrib/rddads/adsfunc.c
* contrib/rddads/rddads.hbx
+ added new PRG function: AdsIsNull()
For ACE libraries < 9.0 it's redirected to AdsIsEmpty()
* src/vm/hashes.c
% changed sorting algorithm for hash arrays which keeps item order.
% do not resort hash arrays when KEEPORDER flag is cleared but use
existing internal index to create new order.
* changed the behavior of hb_hSort() function. Now for hash arrays
which keep item order it changes internal item pair position sorting
them. The sort order depends on binary and case sensitivity hash
array flags.
* src/vm/hvm.c
! for literal hash array with repeated keys store the last item
with the given key instead of the first one. It restores
previous behavior.
* contrib/rddads/rddads.hbx
+ added AdsSetIndexDirection()
* contrib/rddads/adsfunc.c
! fixed formatting of AdsSetIndexDirection()
2013-05-16 17:00 UTC+0200 Jfl mafact (jfl/at/mafact.com)
* contrib/rddads/adsfunc.c
! Adding 2nd param to function ADSCOPYTABLECONTENT to allow filtering
like in ADSCOPYTABLE
* harbour/contrib/rddads/ads1.c
+ run error on invalid SQL query, ex.,
DBUSEAREA(,, "SELECT * FOM syntax_error")
* changed ADS error description to be much more informative
* harbour/contrib/rddads/adsfunc.c
* ADSREGCALLBACK() implemented using AdsRegisterCallbackFunction() instead
of obsolete AdsRegisterProgressCallback(). This enables draw progress
bar for both indexing and SQL query processing.
; implementation unchanged for old ADS versions (<= 6.1)
* harbour/contrib/rddads/adsx.c
! fixed adsSeek() if seek string length is less than index key length
* harbour/src/compiler/hbopt.c
! improved BEGIN/END SEQUENCE support in code trace optimizer. Problem
of false positive warning 'Variable is assigned but not used' is solved
in cases like:
FUNC TEST()
LOCAL n := 1
BEGIN SEQUENCE
IF n == 1
n := 2
BREAK
ENDIF
n := 3
END SEQUENCE
RETURN n
; TODO: test for more complicated cases like nested BEGIN/END SEQUENCE
* harbour/src/rdd/dbf1.c
* added :GetValue() GPF protection if area is "half opened" (ex.,
enumerating field values in error handler on area open failure).
More general solution for "half opened" workareas is welcome