* harbour/include/hbclass.ch
! removed:
MESSAGE <msgName> IS <mthName>
used as synonym of:
MESSAGE <msgName> METHOD <mthName>
If someone was using the removed version then please update the
code to MESSAGE ... METHOD ...
The removed command has special meaning in Class(y) and it allow
to define alternate names for existing messages. I'll add support
for them in the future.
* harbour/contrib/hbct/ctwin.c
* added disabled code which is a workaround for some possible
bad side effect caused by online shadow showing by CTWIN.
* harbour/source/rtl/errorint.c
! fixed displaying internal error message
* harbour/source/common/hbver.c
* added "Rev." prefix to shown revision number
* harbour/include/hbexprop.h
* harbour/include/hbexprb.c
* harbour/source/common/expropt1.c
* harbour/source/common/expropt2.c
+ added hb_compExprReduceNegate()
! fixed wrong negate optimizations for platforms where HB_LONG_MAX
is smaller then -HB_LONG_MIN, f.e. all x86 based CPUs.
! fixed setting the size in optimized negative numbers
! fixed some math optimizations to not use casting to double value
when it's not necessary - when double precision is smaller then HB_LONG
(f.e. on x86 it's 53 bits and HB_LONG has 64bit) such casting can damage
up to 11 less significant bits in big 64 bit numbers.
* harbour/source/rtl/hbinet.c
* replaced MAKEWORD() macro with HB_MKWORD() to pacify BCC58 warnings
* harbour/include/hbdefs.h
+ added #include <limits.h>
It should hide some warnings related to redefined integer size constants
Viktor if it will not help for BCC58 warnings then you will have to add
#include <stdint.h>
few lines below but please remember that older BCC version does not
have it so check for the exact compiler version.
! changed macros which setting default numeric item size for more strict
Clipper compatible mode. I'm not a fun of some Clipper behavior in
calculating number size and I left some notes about it in hbdefs.h
Anyhow this and some other modifications below should cover the
differences you've found recently. Some things are not addressed by
me intentionally, f.e. _itemPutNL() in Clipper always set size to 10
without checking the maximum size so it's too small for values less
then -999999999. Harbour compiler makes more compile time optimizations
then Clipper. The formatting rules used by compiler are a little bit
different then by VM so this can be source of some other differences
to Clipper. I can easy create some examples. Harbour supports 64bit
signed integers and Clipper doesn't. This is yet another situation
when we may have different results then Clipper. Most of them can
be hidden if we add new PCODE(s) for integer number with explicit
size but I do not think it's such important to increase PCODE list.
In few cases it will be necessary to disable some optimizations at
all and I do not like it. In the future when I will be adding some
new optimizations I also add compiler switch to disable/enable
optimizations which can have such side effects for people who need
strict formatting.
* harbour/include/hbvmpub.h
* harbour/source/common/hbstr.c
* harbour/source/vm/hvm.c
* harbour/source/vm/itemapi.c
* harbour/source/rtl/round.c
* updated for more Clipper compatible number formating using new macros
* source/rtl/tget.prg
+ TGet instance variable ordering in class definition
made CA-Cl*pper compatible, so that it's now possible to
access object vars as array elements the same way.
Read-only access is strongly recommended when using this
unofficial access method, and the practice is overall
discouraged.
NOTE: oGet[8] is not supported in Harbour.
NOTE: in oGet[11] (in C52 mode), oGet[17] (in C53 mode)
only the first char is compatible, which is the
type. The rest is 'trash' in CA-Cl*pper.
* tests/rto_get.prg
+ Extended tests with regards to array access of the
TGet object.
* source/rtl/tbcolumn.prg
* Formatting.
* source/common/hbstr.c
* source/compiler/ppcomp.c
* source/compiler/hbgenerr.c
* utils/hbpp/hbpp.c
! Fixed some BCC58 warnings.
; TOFIX: These remain:
Warning W8017 C:\devl\BCC58\Include\stdint.h 77: Redefinition of 'INT16_MIN' is not identical
Warning W8017 C:\devl\BCC58\Include\stdint.h 78: Redefinition of 'INT32_MIN' is not identical
Warning W8017 C:\devl\BCC58\Include\stdint.h 79: Redefinition of 'INT64_MIN' is not identical
Warning W8017 C:\devl\BCC58\Include\stdint.h 82: Redefinition of 'INT16_MAX' is not identical
Warning W8017 C:\devl\BCC58\Include\stdint.h 83: Redefinition of 'INT32_MAX' is not identical
Warning W8017 C:\devl\BCC58\Include\stdint.h 84: Redefinition of 'INT64_MAX' is not identical
Warning W8017 C:\devl\BCC58\Include\stdint.h 87: Redefinition of 'UINT16_MAX' is not identical
Warning W8017 C:\devl\BCC58\Include\stdint.h 88: Redefinition of 'UINT32_MAX' is not identical
Warning W8017 C:\devl\BCC58\Include\stdint.h 89: Redefinition of 'UINT64_MAX' is not identical
Warning W8084 source\rtl\hbinet.c 507: Suggest parentheses to clarify precedence in function HB_FUN_HB_INETINIT
* utils/hbtest/rt_main.h
! Typo.
* utils/hbtest/make_c5x.bat
+ Cleanups, fixes, enhancements.
* Changed invocation for C53. Now "53" (without quotes)
should be used as command line parameter.
+ Now automatically selects linker.
! Fixed MSC parameters for C53.
+ Copyright added.
* harbour/source/rtl/errorapi.c
* allow to pass NULL instead of PHB_ITEM pointer in argument list
of RT error functions:
hb_errRT_BASE()
hb_errRT_BASE_Ext1()
hb_errRT_BASE_Subst()
hb_errRT_BASE_SubstR()
to not force allocating dummy item in upper level code.
* harbour/source/rtl/mod.c
! small fix in substitued return value in code like:
proc main()
set fixed on
? transform(mod( 12345, 0 ),"")
return
* harbour/utils/hbmake/hbmlang.c
* harbour/utils/hbmake/hbmutils.prg
* harbour/utils/hbmake/hbmake.prg
! removed gtnul library - it does not longer exists
* minor formatting
* source/rtl/tbcolumn.prg
+ TBColumn() instance variable ordering in class definition
made CA-Cl*pper compatible, so that it's now possible to
access object vars as array elements the same way.
Read-only access is strongly recommended when using this
unofficial access method, and the practice is overall
discouraged.
* utils/hbtest/make_c5x.bat
* utils/hbtest/hbtest.prg
* utils/hbtest/rt_miscc.c
* utils/hbtest/rt_misc.prg
- Removed dependency on hbclip.
+ Added proper C version of hb_SToD() for C5.x compiles.
(Needs MSC)
! Refixed hb_SToD() results messed up in my previous
commit. Sorry for the confusion, Harbour was perfectly
100% compatible, the reference values were wrong in
default HBTEST for CA-Cl*pper.
+ Disabling hb_SToD() tests with invalid input values
for CA-Cl*pper in case there was no C compiler available
when building HBTEST. This is to avoid any invalid
results (due to the .prg version of hb_SToD() and to
avoid confusions such as above.
* source/rtl/mod.c
! Fixed error object to be C5x compatible when wrong or too
few parameters were passed to MOD(). Now the previously
corrected MOD() regression tests pass. (I misinterpreted
the problem in the previous ChangeLog entry.)
* utils/hbtest/rt_math.prg
+ Added two new tests for MOD()
* common.mak
+ utils/hbtest/rt_main.h
+ utils/hbtest/rt_miscc.c
* utils/hbtest/rt_str.prg
* utils/hbtest/Makefile
* hbtest/make_c5x.bat
* hbtest/make_xpp.bat
+ Added light framework to implement C level regression tests.
+ Added regression tests for some incompatible Str() conversions.
TOFIX: The problem seems to be in hb_retnl() (and friends,
presumably) where in C5x the internal width gets
modified to 20 when certain value is reached (+/-1000000000),
while in Harbour the length stays 10.
I tried to do the same test using Item API, but I got
so strange results in C, that I finally dropped it.
+ Added optional C compilation using MSC for CA-Cl*pper
build batch file.
+ Added better support to compile the test suite under C5.3.
Caller will need to use "set HB_COMPAT_C53=1" for this mode.
* utils/hbtest/rt_array.prg
! Corrected some (ASize()) expected results when not in 5.3 mode.
* utils/hbtest/rt_str.prg
+ Added comments for some erroneous C5.3 'Str(Val())' results.
* utils/hbtest/rt_math.prg
! Corrected expected C5.2/5.3 result for 'MOD()'.
TOFIX: The Harbour result is different, and in contrary to
C5.x it won't allow to substitue values from the
error handler, when wrong types were passed initially,
which is IMO a bug.
* utils/hbtest/rt_misc.prg
! Some results synced with C5.x (where the result could be
"explained"), two marked as buggy/questionable.
! Two strange Harbour-synced results swapped for the somewhat
more meaningful C5.x ones.
+ Added some more strange date conversion tests.
; All these could be fixed in Harbour to give the exact same
C5.x values even for these strange inputs, but it's by no
means a priority.
* source/rtl/transfrm.c
! FoxPro/XPP feature guarded with HB_COMPAT_FOXPRO || HB_COMPAT_XPP,
meaning that it stays enabled by default because of HB_COMPAT_XPP.
* contrib/rddads/make_b32.bat
* contrib/rddads/make_vc.bat
! Fixed the dir precedence when looking for ace32.dll.
* source/debug/tbrwtext.prg
! fixed small typo that was allowing wordwrapping long source code lines
and was messing with the correct display of the current line
* harbour/contrib/rddado/adordd.prg
Instead of overloading FOUND method in ADO RDD it will be
more efficient to use standard implementation written in C
by Przemyslaw suggestion
* harbour/ChangeLog
* harbour/harbour.spec
* reverted translation to UTF8 - Tomaz please check your editor
settings and disable automatic translation to UTF8. It's not
the first as such situation happens.
* harbour/include/hbclass.ch
+ added two missing PP directives
! protected against some repeated external definitions
* harbour/source/pp/Makefile
* harbour/source/pp/hbppgen.c
* harbour/source/pp/ppcore.c
* harbour/source/common/hbver.c
* harbour/source/common/hbverdsp.c
* harbour/source/main/harbour.c
* harbour/source/vm/cmdarg.c
* harbour/utils/hbpp/hbpp.c
* harbour/include/hbpp.h
* harbour/include/hbcomp.h
* harbour/include/hbver.h
* harbour/include/hbapi.h
* harbour/make_vcce.mak
* harbour/make_b32.mak
* harbour/make_vc.mak
* harbour/make_gcc.mak
+ added support for dynamically set during compilation ChangeLog entry
ChangeLog ID and SVN revision and compilation flags
Now hbppgen creates in include directory hbverbld.h file with
information extracted from ChangeLog. New hbppgen parameters:
Syntax: ./hbppgen <file>[.prg] [options]
Options: -i<path> add #include file search path
-c[<file>] look for ChangeLog file
-o<file> creates .c file with PP rules
-v<file> creates .h file with version information
-w write preprocessed (.ppo) input file
-q disable information messages
+ added new C functions:
int hb_verSvnID( void )
- retrieves ChangeLog SVN revision number
const char * hb_verSvnChangeLogID( void )
- retrieves a static buffer containing ChangeLog ID string
const char * hb_verSvnLastEntry( void )
- retrieves a static buffer containing ChangeLog last entry string
const char * hb_verFlagsC( void )
- retrieves a static buffer containing build time C compiler
flags in C_USR envvar
const char * hb_verFlagsL( void )
- retrieves a static buffer containing build time linker
flags in L_USR envvar
const char * hb_verFlagsPRG( void )
- retrieves a static buffer containing build time Harbour compiler
flags in PRG_USR envvar
+ added new default PP defines which can be used in .prg code compiled
by Harbour compiler: HB_VER_LENTRY, HB_VER_CHLID, HB_VER_SVNID
* harbour/source/rtl/gtxwc/gtxwc.c
* formatting
* harbour/source/rtl/gttrm/gttrm.c
! fixed redrawing GPM mouse pointer after screen updating
* harbour/source/rtl/gtstd/gtstd.c
* harbour/source/rtl/gtpca/gtpca.c
* updated for compilation even if some POSIX macros are not supported
f.e. problems with some DJGPP versions reported recently
* harbour/source/debug/dbgentry.c
* harbour/source/debug/dbgtobj.prg
* harbour/source/debug/dbgbrwsr.prg
* harbour/source/debug/dbgthsh.prg
* harbour/source/debug/tbrwtext.prg
* harbour/source/debug/dbgwa.prg
* harbour/source/debug/debugger.prg
* harbour/source/debug/dbghelp.prg
* harbour/source/debug/dbgtarr.prg
! Fixed object inspector in the debugger.
! Added HbDbBrowser:invalidate() message. Fixes work area browsing in debugger.
! Added an minimalistic TBrowse implementation that is just enough
for internal use by the debugger. Fixes miscellaneous problems e.g.
when debugging a piece of code with RELATIONs turned on.
Fixes by Phil Krylov borrowed from xHarbour.
* harbour/source/rtl/gtos2/gtos2.c
* small changes, removed some un-needed code
- by Maurilio Longo in xHarbour
! use screen buffer in BYTEs instead of USHORTs to avoid possible
problems on big endian machines. I do not know if such OS2 ports
exist but this code should be also endian independent like rest
of Harbour code
* harbour/source/rtl/hbgtcore.c
! Fixed screen buffer corruption on little-endian platforms in
hb_gt_def_ColdArea() - fixed by Phil Krylov in xHarbour - many thanks
* harbour/common.mak
* harbour/source/lang/Makefile
+ harbour/source/lang/msgskiso.c
+ harbour/source/lang/msgskwin.c
+ harbour/source/lang/msgskkam.c
+ harbour/source/lang/msgsk852.c
+ added Slovak national messages by Gyula Bartal - many thanks
* harbour/include/hbapi.h
* harbour/source/vm/arrays.c
! Guarded hb_arraySetNLL() declaration with #ifndef HB_LONG_LONG_OFF.
! Fixed trace in hb_arraySetNInt().
By Phil Krylov borrowed from xHarbour
* harbour/include/hbgtcore.h
! added missing HB_EXTERN_BEGIN / HB_EXTERN_END
By Ron Pinkas borrowed from xHarbour
* harbour/source/rtl/gtos2/gtos2.c
% updated for much faster screen updating in OS2 console - many
thanks for Maurilio Longo for tests and code.
* harbour/source/rtl/cdpapi.c
! fixed CP string translation for CPs with accented equal characters
+ added HB_UTF8CHR( <nUniVal> ) -> <cUtf8Char>
It's compatible with the function HB_UTF8CHR() by Phil Krylov in
xHarbour
* harbour/source/rtl/gtsln/gtsln.h
* removed repeated #include <unistd.h>
* harbour/contrib/hbct/files.c
! fixed FILESEEK() called with 3-rd parameter set to .T. (exact
attribute match)
* harbour/config/os2/global.cf
! added fixes by David Arturo Macias Corona
+ harbour/make_os2_gcc.cmd
+ added build file for GCC OS2 users with minimal environment settings
* harbour/include/hbapi.h
* harbour/source/common/hbver.c
* harbour/source/rtl/gttone.c
* added hb_iswince() and fixed TONE() for WinCE
* harbour/source/rtl/math.c
! added workaround for SIGFPE platforms which generate it instead of
setting errno during execution of math functions
* harbour/source/rtl/gtcrs/hb-charmap.def
! remap 0x9b (155) to '.' in Linux terminals - it's control code
* harbour/source/rdd/dbsql.c
* harbour/source/rdd/workarea.c
* harbour/source/rdd/dbf1.c
! always restore current workarea in WA EVAL() method
! always use EVAL() method for user codeblocks and macros
* harbour/source/rdd/dbcmd.c
! fixed DBRELATION() called without numeric parameters or with 0 to
return first relation expression (Clipper compatible)
* harbour/contrib/hbtip/thtml.prg
! fixed wrongly ported to Harbour xHarbour specific code
* harbour/source/common/hbstr.c
+ added missing const in one declaration
* formatting
* harbour/source/rtl/transfrm.c
! fixed casting for C++ compilers
* harbour/source/rtl/errorapi.c
* harbour/source/rdd/dbfntx/dbfntx1.c
! cleanup warnings
* harbour/source/common/hbtrace.c
* harbour/source/rdd/dbcmdx.c
* harbour/source/rdd/wafunc.c
* harbour/source/rdd/dbffpt/dbffpt1.c
* harbour/source/rdd/hbsix/sxcrypt.c
* formatting
* harbour/include/hbapifs.h
! default usage of BSD locks in *BSD systems for emulating
DOS/Windows DENY_* flags has been disabled because tests
on FreeBSD 6.2 and MacOSX shows that this implementation
can create self deadlock when used simultaneously with
POSIX locks - thanks to Phil and Lorenzo for locating the
problem and tests.
* harbour/contrib/hbct/screen2.c
! fixed possible vary bad bug (memory buffer overflow) in SCREENSTR()
* harbour/source/rtl/hbffind.c
! fixed possible GPF in some *nixes
* harbour/source/vm/classes.c
! do not execute the same destructor inherited from different parent
classes more then once
* harbour/source/rtl/transfrm.c
! fixed bug with '9' used as stop condition of function pattern
this character cannot be stripped, f.e.:
? transform( "abc", "@_99*" )
! fixed bug with '*' or '$' used with @), f.e.:
? transform( -12345, "@) $999999" )
! fixed replacing '.' with ',' when @E is used without picture part, f.e.:
? transform( 123.45, "@E" )
! fixed ',' conversions
? transform( 12.34,"@E ab,cd.ef9,9.99,.--" )
! fixed bug with picture starting with ".", f.e.:
? transform( 0.3456, ".999" )
! fixed "@(" and "@)" conversions, f.e.:
? transform( -12345, "@) 1999*999" )
! fixed late oveflow detection in "@(" and "@)", f.e.:
? transtest( -12345, "@( 6798^999" )
! fixed "@E" conversion for dates to keep user delimiters set in
_SET_DATEFORMAT, f.e.:
set( _SET_DATEFORMAT, "mm:dd:yyyy" ); ? transform( date(), "@E" )
set( _SET_DATEFORMAT, "yyyy<mm>dd" ); ? transform( date(), "@E" )
Please note that Harbour is not strictly Clipper compatible here
because it respects _SET_DATEFORMAT set by user.
! fixed 64bit integer conversion by eliminating conversion to
'double' f.e.:
? transform( 1234567890123456789, "99999999999999999999" )
? transform( -1234567890123456789, "99999999999999999999" )
! some other fixes, see regression test transtst.prg
% speed improvement in numeric conversions
+ harbour/tests/transtst.prg
+ added regression test for transform function
* harbour/utils/hbtest/rt_trans.prg
* disabled transform() tests for "@E" and result smaller then 5 bytes
CA-Cl*pper do not check result size and always exchanges
bytes 1-2 with bytes 4-5 for @E conversion. It's buffer overflow
bug and I do not want to replicate it inside our transform
implementation. It also causes that the results for for strings
smaller then 5 bytes behaves randomly.
In fact precise tests can show that it's not random behavior
but CA-Cl*pper uses static buffer for result and when current one
is smaller then 5 bytes then first two bytes are replaced with
4-5 bytes from previous result which was length enough, f.e.:
? transform( "0123456789", "" )
? transform( "AB", "@E" )
? transform( "ab", "@E" )
Replicating exact CA-Cl*pper behavior it's trivial (it will be enough
to use static buffer two and not check the size of current result) but
IMHO it's bug.
* harbour/source/rtl/round.c
* added strictly Clipper compatible code covered by HB_C52_STRICT
and comment about possible difference in Harbour.
* harbour/include/hbgtinfo.ch
* harbour/source/rtl/hbgtcore.c
* harbour/source/rtl/gtxwc/gtxwc.c
* harbour/source/rtl/gtsln/gtsln.c
* harbour/source/rtl/gttrm/gttrm.c
* harbour/source/rtl/gtwvt/gtwvt.c
+ added HB_GTI_ISUNICODE - it returns logical value with information
about Unicode mode in active GT driver - it's necessary for proper
CP initialization in some GTDs which can work in both mode depending
on client side settings
* harbour/source/rtl/gttrm/gttrm.c
* improved UTF-8 detection
* added automatic PuTTY detection
* improved PuTTY and some xterm key handling
* added some missing RXVT keys
* harbour/make_b32.mak
* Synchronized with make_vc.mak regarding HB_BUILD_ST and HB_BUILD_MODE
environment usage. There is still a difference between make_b32.mak
and make_vc.mak, because under BCC - ST mode is default, while under
MSVC - MT mode is default. To use MT mode under BCC one needs to
set HB_BUILD_ST to something different than a word "yes". For example:
set HB_BUILD_ST=no. The difference comes from the fact that so far
BCC build has always been done in ST mode. It will be changed after
a 1.0 release. Please note that harbour.dll is *always* built in MT
mode under BCC and MSVC.
* harbour/make_vc.mak
! Forced MT mode for harbour.dll
* Minor formating
* harbour/contrib/mtpl_vc.mak
! Fixed compilation using ST mode
* harbour/contrib/mtpl_b32.mak
! Fixed compilation of CPP files
+ Added ST/MT handling logic
* harbour/contrib/hbziparch/make_b32.bat
! Fixed compilation on some BCC instalations
* harbour/source/rtl/cdpapi.c
! fixed unicode values for control codes in default CP437 unicode table
* harbour/source/rtl/gtchrmap.c
! added missing default translation of chr(155) - it's control code
on most of terminals and should not be shown in non UFT-8 mode
* harbour/source/rtl/gttrm/gttrm.c
! do not use alternate character set for box drawing in UTF-8 mode
New Linux consoles disable UTF-8 mode when alternate character set
is enabled
* harbour/contrib/hbct/ctwin.c
* harbour/contrib/hbct/ctwin.h
* harbour/contrib/hbct/ctwfunc.c
* overload ReadKey() method for future window moving when scroll lock
is set and for KEYREAD() implementation.
* store real last key value in CTWIN GT.
* harbour/make_vc.mak
+ Added a possiblity to compile harbour in ST or MT mode by using
an environment variable called HB_BUILD_ST. Setting HB_BUILD_ST
to yes, causes Harbour+RTL+VM to be built in ST mode. Otherwise
MT mode is used.
* harbour/source/main/harbour.c
* harbour/source/common/hbfsapi.c
! fixed hb_fsFNameSplit()/hb_fsFNameMerge() to respect path delimiter
set by user
* harbour/contrib/hbct/ctwfunc.c
! fixed WFORMAT() called without parameters - it should reset
all existing margins
! fixed WSETSHADOW() to accept color also as character parameter
* harbour/contrib/hbfimage/make_gcc.sh
! Fixed CFLAGS settings from a proper FREEIMAGE_INC envvar
* harbour/contrib/hbziparch/make_vc.bat
! Disabled warnings about functions considered "depreciated" by MS
* harbour/contrib/mtpl_gcc.mak
* harbour/contrib/mtpl_gcc.sh
! Fixed HB_ARCHITECTIRE, CC and LD envvar settings
* harbour/contrib/mtpl_vc.mak
! Forced CPP mode compilation for a ".cpp.obj" rule
* harbour/source/rtl/direct.c
* fixed Clipper compatibility when last character of given path
is directory delimiter or drive delimiter
* harbour/source/rdd/dbf1.c
* added RT error when corrupted memo block address is detected
in DBF file.
* harbour/contrib/hbwhat32/make_gcc.sh
! Fixed compilation under MingW and Cygwin
* harbour/contrib/make_b32_all.bat
* harbour/contrib/make_vc_all.bat
+ Added hbwhat32 to a list of compiled contribs
* harbour/contrib/make_gcc_all.sh
- Removed hbzlib from a list of mandatory compiled contribs.
It still can be compiled conditionaly.