* src/vm/dlmalloc.c
! Fixed two potentially uninitialized variables, signaled by MSVC.
* src/common/hbgete.c
+ Changed to use native SetEnvironmentVariable() API instead of
forced ANSI one.
* src/common/hbwince.c
* include/hbwince.h
% Deleted unused ANSI Windows API stubs.
+ Added empty SetEnvironmentVariable() stub for WinCE
builds where it's missing.
* Reconfigured these stubs:
SetCurrentDirectory()
GetCurrentDirectory()
GetComputerName()
GetUserName()
* config/win/global.mk
* Comment updated.
* config/win/msvc.mk
+ Added -nxcompat and -dynamicbase to .dll link command.
(I'm unsure what -dynamicbase is good for in a .dll, but it's
accepted and set)
! Fixed to add -nxcompat/-dynamicbase for MSVC 2008 and upper.
(it's also possible to use it with MSVS 2005 SP1 though, but
build won't detect this case)
* INSTALL
+ Added free SVN book link.
* src/vm/extrap.c
% Marked exception filter callback as 'static'
; TOCHECK: Please verify that OS/2 still works this way.
* src/rtl/oemansi.c
! Fixed two tabs.
* src/rtl/gtwvt/gtwvt.c
* contrib/gtwvg/gtwvg.c
* contrib/rddads/adsfunc.c
! Fixed to not use unsafe/ANSI CharToOemBuffA() API.
; Please review me.
* config/win/mingw.mk
+ Added information about MinGW alternatives for MSVC
security features. Unfortunately they need Cygwin
binary plus some depend on MinGW host platform
and/or version.
* include/hbwince.h
* src/common/hbwince.c
- Deleted CharToOemBuffA(), OemToCharBuffA(). No longer
needed by Harbour.
; TODO: Delete rest of not anymore used ANSI WinAPI
functions. Now Harbour never uses ANSI
WinAPI functions in UNICODE mode.
* config/win/global.mk
- Deleted reference to CharToOemBuffA(), OemToCharBuffA().
* harbour/ChangeLog
! fixed typo in my recent ChangeLog entry
* harbour/src/vm/fm.c
% minor simplification
* harbour/src/common/hbtrace.c
! fixed possible recursive call reported by Istvan
* harbour/src/nortl/nortl.c
! added hb_xtraced()
* harbour/src/common/hbstr.c
* do not fill unused part of buffer with '\0' bytes in
hb_strncpy(), hb_strncpyLower(), hb_strncpyUpper(),
hb_strncpyUpperTrim(), hb_strncpyTrim()
* harbour/src/common/hbtrace.c
% small optimization in building Unicode OutputDebugString() message
* harbour/src/codepage/Makefile
* harbour/include/hbapicdp.h
+ harbour/src/codepage/ucyuscii.c
+ added YUSCII unicode table
* harbour/src/codepage/cphr437.c
* harbour/src/codepage/cpsl437.c
! fixed unicode table used in HR437 and SL437 Harbour CPs.
It's not CP-437 but YUSCII
- removed my old note "TOFIX: is it really CP-437?"
TOFIX: change Harbour names of above CPs, i.e. to HRYU and SLYU
* harbour/src/codepage/uckam.c
* removed TOFIX note I forgot to remove when committed correct
Kamenicky Unicode table.
* harbour/src/codepage/uckoi8.c
* harbour/src/codepage/uc857.c
* harbour/src/codepage/uc1250.c
* harbour/src/codepage/uc1254.c
* harbour/src/codepage/uc866.c
* harbour/src/codepage/uc850.c
* harbour/src/codepage/uc1251.c
* harbour/src/codepage/ucmaz.c
* harbour/src/codepage/uc1252.c
* harbour/src/codepage/uc8859_1.c
* harbour/src/codepage/uc88591b.c
* harbour/src/codepage/uc852.c
* harbour/src/codepage/uc737.c
* harbour/src/codepage/uc1253.c
* harbour/src/codepage/uc1257.c
* harbour/src/codepage/uc8859_2.c
* updated some of my old copyright messages
* harbour/include/hbapi.h
* harbour/src/common/hbprintf.c
+ added new function 'int hb_printf_params( const char * format )' which
returns number of parameters necessary for format string
* harbour/src/common/hbtrace.c
* added protection against recursive calls when number of parameters
used by HB_TRACE message us bigger then 16 and fm.c module was compiled
with HB_TR_DEBUG macro
% use the same number of characters for unicode and byte string buffers
% use common memory area (union) for unicode and byte messages to reduce
C stack usage
Please test these modifications in real MS-Windows systems.
* src/vm/fm.c
* include/hbapi.h
+ Added hb_xtraced(). Please check it might be wrong.
* src/common/hbtrace.c
- Deleted hack to disable winout to avoid recursive calls.
+ Added TOFIX to avoid recursive calls with some clever
detection on error case (hb_xtracd() && no_of_formatt_strings > 16)
I didn't implement it, pls do so if interested.
! Fixed MultiByteToWideChar sizeof() to HB_SIZEOFARRAY().
* src/common/hbtrace.c
* Deleted TOFIX for va_end(). It's not required (and wasn't
ever required there) since there is no va_start() call in
hb_tracelog_() function at all.
* src/common/hbtrace.c
! Fixed some leftover causing error on non-win.
% Replaces \r\n with \n in printf() calls.
[TOMERGE 2.0]
* config/win/bcc.mk
+ Added -CP437 bcc option as default, so that it fixes compilation
on windows systems are setup to use certain (f.e. far east)
multibytes codepages as default non-Unicode CP.
* src/common/hbtrace.c
! Readded hack to disable reentrancy for win specific trace logic
until we clear up the issue with some Harbour API calls used from
win specific trace code are calling back to the trace engine.
* src/common/hbtrace.c
! Fixed to not call hb_xgrab() via HB_TRACE_CONVTO() causing
infinite recursion into trace engine. This replaces previously
committed trick to avoid the same thing in a generic manner.
It was a bug in previous Windows-support addition, which is now fixed.
* Adding \r\n for OutputDebugString() text to make WinDbg display
look readable, this time by simply extending printf() mask.
- Deleted space trimming from OutputDebugString() passed text.
Such issues should be fixed in high level code, it's not trace
engine's job to make cosmetic corrections on trace text content.
; Tested with both WinDbg and DbgView.
[TOMERGE 2.0]
; TOFIX:
va_end() has been commented for all platforms, although
it's required by all documentation I could verify.
If this causes problems for specific platforms/compilers,
we should only add this hack for those targets, and only
when HB_TR_WINOUT is enabled.
Now every non-Windows and Windows non-HB_TR_WINOUT
setups are not complying with CRTL documentation.
Could someone help here?
* src/common/hbtrace.c
! Formatting.
! Fixed to use HB_ISSPACE().
; NOTE/TOFIX: Anyhow I think last patch should be reverted to not manipulate
passed by user string before passing it to Windows.
Plus current anti-reentrancy logic should be changed to something
robust, as current solution drops trace messages which is a very
dangerous thing to do if we want to rely on trace output for
debugging. It's not clear what "stack overflow events" are.
* doc/codestyl.txt
! Fixed link. Thanks Vailton.
[TOMERGE 2.0]
* harbour/src/common/hbtrace.c
* early va_end( ap ) elimination, to avoid access violation generation in a subsequent hb_vsnprintf
* fix nested HB_TRACE calls handlig to avoid stack overflow events
* normalized debug info sending to OutputDebugString with ending CR/LF/NUL to ensure a correct view in windbg.
* harbour/include/Makefile
* harbour/include/hbmath.h
+ harbour/include/hbmather.h
* harbour/include/hbsetup.h
* harbour/include/hbapi.h
* moved math error handler definitions and settings separate header file
* moved hb_random_num() declaration from hbmath.h to hbapi.h
After above modification hbmath file should be use only by code which
wants to use math functions declared usually in math.h
+ harbour/include/hbfloat.h
+ added header file with test macros for floating point numbers
this file should be included before any other files
* harbour/src/vm/hvmall.c
* harbour/src/vm/itemapi.c
* harbour/src/common/hbprintf.c
* harbour/src/rtl/math.c
* use new macros from hbfloat.h
* harbour/src/rtl/math.c
+ include "hbmather.h"
* harbour/src/rtl/hbrandom.c
* harbour/src/rdd/dbf1.c
* harbour/contrib/xhb/hboutdbg.c
- removed not longer necessary include "hbmath.h"
* harbour/contrib/hbct/ctmath.h
- do not include <float.h> and <limits.h>
* harbour/contrib/hbct/ct.h
- do not include "hbmath.h" and "ctmath.h"
* harbour/contrib/hbct/ctmath.c
* harbour/contrib/hbct/exponent.c
* harbour/contrib/hbct/ctc.c
+ include "ctmath.h"
* harbour/contrib/hbct/trig.c
* harbour/contrib/hbct/finan.c
* harbour/contrib/hbct/ctmath2.c
+ include "ctmath.h"
+ include "hbmather.h"
* harbour/contrib/hbct/num1.c
+ include "ctmath.h"
+ include <float.h>
* harbour/include/hbinit.h
* harbour/src/rtl/hbsocket.c
* added patches from Tamas - thanks
* harbour/bin/hb-func.sh
* harbour/harbour.spec
+ create /etc/ld.so.conf.d/harbour.conf with Harbour shared lib directory
if /etc/ld.so.conf.d directory exists and user has sufficient write
permission or install package is created.
This modification allows to install Harbour anywhere and in modern
distros using /etc/ld.so.conf.d/ harbour shared libraries will be
always available for all programs
[TOMERGE 2.0]
* harbour/include/hbmath.h
! enable HB_MATH_ERRNO in all *unix builds not only in GCC ones
* harbour/src/vm/itemapi.c
! use finite() to check for valid double values - looks that SunCC
does not report iDODO warnings so we were not informed about the
problem
* harbour/include/hbdefs.h
* harbour/src/common/hbprintf.c
% use also _STDC_C99 macro not only _ISOC99_SOURCE to detect C99 mode
and do not reduce such detection to GCC
[TOMERGE 2.0]
* harbour/include/Makefile
+ harbour/include/hbtrace.ch
* harbour/include/hbtrace.h
* harbour/src/rtl/trace.c
* harbour/src/common/hbtrace.c
! fixed hb_tracelevel() C function to change trace filter instead of
last message level. It also fixed .prg function HB_TRACELEVEL().
+ added new C function:
void hb_tracelog( int level, const char * file, int line,
const char * proc, const char * fmt, ... )
+ added new .prg functions:
hb_traceLogLevel( <nNewLevel> ) -> <nPrevLevel>
hb_traceLog( <xMsgItems,...> ) // generate message at
// hb_traceLogLevel()
hb_traceLogAt( <nLevel>, <msg,...> )
+ added support for HB_TRACE() messages in .prg code with the same
functionality as in C code:
HB_TRACE( <level>, <msg,...> )
HB_TRACE() code if filtered at compile time by HB_TR_LEVEL_* macros
i.e. -DHB_TR_LEVEL_INFO used as harbour compiler parameter
and at runtime by HB_TR_LEVEL=<level> envvar (set HB_TR_LEVEL=DEBUG)
or by hb_traceLevel( <nLevel> ) function (hb_traceLevel( HB_TR_DEBUG ))
Default compile time and runtime trace level for C and .prg code
is HB_TR_WARNING.
* harbour/src/common/hbdate.c
* casting for some more pedantic C/C++ compilers
* harbour/include/hbinit.h
* allow to force static C++ initialization as startup code in
GCC and SunPRO builds by HB_STATIC_STARTUP macro
* harbour/include/hbsetup.h
* harbour/include/hbdefs.h
* harbour/include/hbthread.h
* harbour/src/common/hbver.c
* harbour/bin/hb-func.sh
* harbour/bin/postinst.sh
* harbour/config/linux/gcc.mk
+ harbour/config/linux/open64.mk
+ added support for Open64 C/C++ compiler in Linux builds
* harbour/src/common/hbver.c
* removed unnecessary casting compiler version number parameters
to 'short'
* extended the size of szBuf buffer as requested by Tamas
* src/common/hbtrace.c
+ Added support for HB_TR_WINOUT envvar (on Windows platform-only)
to enable pushing trace output via OutputDebugString() calls.
Use this before running an app:
set HB_TR_WINOUT=yes
(anything non-empty would work, not just 'yes')
* src/rtl/trace.c
+ HB_TRACESTRING(): Added support to accept multiple parameters,
it also handles non-string parameters, just like OUTSTD()/QOUT().
% Minor optimization to HB_TRACE() call.
; NOTE: Above two changes make it unnecessary to use custom made
debug/trace solutions inside each contrib, and it also makes
it unnecessary to use xhb lib for other proprietary trace solutions.
* src/rtl/console.c
* Variable scope optimization.
* contrib/hbgd/gdwrp.c
* Minor formatting.
* src/common/hbver.c
! Fixed determining the patch level of MSVC compiler on
or above version 2005.
Adapted fix from xhb / Andi Jahja.
* contrib/hbqt/hbqt_slots.cpp
* Little renaming.
* contrib/hbwin/win_prn2.c
% GETPRINTERS(): Changed to use printer list retrieving on NT
systems to the one used on Win9x systems. This greatly simplifies
the code.
% GETPRINTERS(): Optimized out one PHB_ITEM variable.
% GETPRINTERS(): Moved variables closer to their user blocks.
* GETPRINTERS(): Using empty strings instead of inconsistent
"Error"/"ERROR" texts on error.
(INCOMPATIBLE).
; Pls test.
* src/common/hbver.c
+ Some changes to the way LLVM/CLang are detected. One
remaining combination was now added also.
Pls review me.
* src/common/hbffind.c
* src/rtl/fscopy.c
* src/rtl/fserr.c
* src/rtl/hbfeof.c
* src/rtl/errapi.c
* src/rtl/hbsocket.c
* src/rtl/filesys.c
* src/rtl/philes.c
* src/rtl/dirdrive.c
* src/rtl/filebuf.c
* src/rtl/hbproces.c
* include/hbstack.h
* include/hbapifs.h
* include/hbapierr.h
* Changed USHORT type for error codes to HB_ERRCODE.
+ More or less changed int type of Extend/Item API call to
long type to prepare for HB_ERRCODE change to ULONG.
; TODO: Rename variables to reflect new type.
; TODO: Change internal error code from ULONG to HB_ERRCODE.
; TODO: Inspect rest of Harbour like above. I've only dealt with
rtl, vm.
; TODO: hbnetio protocol needs to be modified to pass errcode
as 32 bit value.
; NOTE: There is still disagreement in code in few places
in error type and 'int' is used internally, f.e.
sockets, some internal OS code conversion funtions.
; TODO: Different topic, but we use a lot of USHORTs to
store modes, tries, severity, operation, flags and
few other things which would better be stored as
simple int probably.
; Please review me.
* harbour/src/common/hbstr.c
! fixed typo in HB_TRACE message - problem reported by Alex
* harbour/src/rtl/cdpapi.c
! fixed casting for C++ builds - problem reported by Marcos
* harbour/src/common/hbgete.c
* harbour/src/common/hbffind.c
* harbour/src/common/hbfsapi.c
* harbour/src/rtl/fstemp.c
* harbour/src/rtl/filesys.c
* harbour/src/rtl/diskspac.c
* harbour/src/rtl/disksphb.c
* harbour/src/rtl/net.c
! fixed memory leak reported by Pritpal
* cleanup some UNICODE conversions in Windows builds (mostly resolved
some macros when UNICODE macro is also explicitly used and cleaned
some buffers length passed to windows functions.
* removed unnecessary casting - if it's not necessary for some strange
reasons never cast strings to LP[C][TW]STR calling windows functions.
Such casting does not make any conversions but only hides potential
bugs.
* harbour/contrib/hbwin/axcore.c
* pacified warning
* harbour/src/rdd/dbfnsx/dbfnsx1.c
! fixed bug reported by Jaroslav Janik (many thanks) - if index FOR
expression excluded all records from non empty table then root page
was not initialized and DBFNSX generated corruption RTE.
* harbour/utils/hbi18n/hbi18n.prg
* set default GT to CGI
* harbour/src/common/hbgete.c
! fixed memory leak in non UNICODE Windows hb_getenv_buffer()
! add C stack buffers to eliminate memory allocation in UNICODE
Windows hb_getenv_buffer() - they are used if envvar name and
passed buffer are not too large. It fixes HB_FM_STATISTICS
Windows builds.
* harbour/contrib/hbwin/wapi_winuser.c
+ added WAPI_DESTROYWINDOW function
* harbour/contrib/xhb/traceprg.prg
* harbour/contrib/xhb/hbcompat.ch
! fixed typo in TraceLog() condition - was always disabled
+ added emulation for xHarbour Set( _SET_TRACE* [, <params,...> ] )
settings
* harbour/src/vm/hvmall.c
! define _GNU_SOURCE to fix compilation with HB_FM_DL_ALLOC in Linux
builds
* harbour/include/hbdefs.h
* declare HB_FOFFSET as LONG instead of LONGLONG on platforms where
LONG is 64bit integer to be compatible with C RTL file API
* harbour/src/vm/maindllh.c
* harbour/src/vm/maindllp.c
* harbour/contrib/hbct/ctstr.c
! casting in HB_TRACE() massages
* harbour/include/hbapi.h
* harbour/include/hbapiitm.h
* harbour/src/vm/arrays.c
* harbour/src/vm/hashes.c
* harbour/src/vm/itemapi.c
+ added hb_arrayCloneTo(), hb_hashCloneTo(), hb_itemCloneTo()
* harbour/src/vm/arrayshb.c
* harbour/src/vm/classes.c
* harbour/src/vm/hashes.c
* harbour/src/vm/hashfunc.c
* harbour/src/vm/hvm.c
% use hb_*CloneTo() instead of hb_*Clone()
* harbour/include/hbapi.h
* harbour/src/vm/garbage.c
- removed hb_gcRegisterSweep() function and support for user defined
sweep mark functions in GC blocks
- removed hb_gcAlloc() function
+ added new function hb_gcAllocate() which work in similar way to removed
hb_gcAlloc() function but it accepts as second parameter HB_GC_FUNCS
structure instead of HB_GARBAGE_FUNC_PTR and returned GC blocks are
locked so programmer does not have to worry that they can be removed
by GC.
+ added new internal function hb_gcAllocRaw() which works like
hb_gcAllocate() but returned GC blocks are not locked. They can
be used only in HVM in places well known that cannot activate
automatic GC scan. It should not be used by 3-rd party code.
* harbour/include/hbapi.h
* harbour/include/hbapiitm.h
* harbour/src/vm/extend.c
* harbour/src/vm/itemapi.c
* modified hb_parptrGC(), hb_parvptrGC(), hb_arrayGetPtrGC(),
hb_itemGetPtrGC() functions to use HB_GC_FUNCS structure instead
of HB_GARBAGE_FUNC_PTR
* modified hb_itemPutPtrGC() and indirectly related functions like
hb_arraySetPtrGC() or hb_stor[v]ptrGC() to automatically unlock
passed GC block just after attaching to known HVM item.
* harbour/include/hbregex.h
* harbour/src/rtl/hbregexc.c
* declare GC block detractor as static function
+ added hb_regexIs() function
* updated to work with new GC API
* removed unnecessary in new GC API hb_gcLock() call - GC blocks
allocated by hb_gcAllocate() are already locked and they mustn't
be locked explicitly by programmer (until he does not exactly knows
what he does ;))
* harbour/src/rtl/hbregex.c
* use hb_regexIs() instead of using regex GC destructor
* removed unnecessary in new GC API hb_gcUnlock() call - GC blocks
stored in HB_IT_POINTER item are automatically unlocked
* harbour/src/rtl/hbinet.c
* harbour/contrib/hbcurl/hbcurl.c
* updated to work with new GC API
% unlock items storing callback codeblocks and use GC mark functions
to mark them as used in GC passes
* harbour/src/pp/pplib.c
* harbour/src/vm/runner.c
* harbour/src/vm/codebloc.c
* harbour/src/vm/hashes.c
* harbour/src/vm/hvm.c
* harbour/src/vm/arrays.c
* harbour/src/vm/thread.c
* harbour/src/vm/dynlibhb.c
* harbour/src/rtl/hbzlibgz.c
* harbour/src/rtl/hbregex.c
* harbour/src/rtl/hbregexc.c
* harbour/src/rtl/hbgtcore.c
* harbour/src/rtl/hbi18n1.c
* harbour/src/rdd/wacore.c
* harbour/contrib/hbsqlit3/hbsqlit3.c
* harbour/contrib/hbnetio/netiosrv.c
* harbour/contrib/hbmzip/hbmzip.c
* harbour/contrib/hbhpdf/harupdf.c
* harbour/contrib/hbwin/olecore.c
* harbour/contrib/hbwin/win_prn1.c
* harbour/contrib/hbwin/win_dll.c
* updated code which was using hb_gcAlloc() to work with new GC API.
* harbour/contrib/hbwin/axcore.c
* updated syntax description
TODO: update contrib code: hbqt, hbssl, ... to work with new GC API.
I would like to ask authors of above libraries to do it.
TODO: defined when and how we should free AX control and user callback
handler and update AX code to respect new definition
* harbour/src/common/hbwince.c
+ added GetEnvironmentVariableW() - it fixes WinCE builds after recent
ANSI to UNICODE function conversions. In WINCE such functions do not
exist.
* harbour/src/rtl/gtclip.c
* pacified MinGWCE warnings
* harbour/src/rtl/dateshb.c
+ added HB_TTOD() and HB_DTOT() functions
* src/common/hbver.c
* src/rtl/fstemp.c
* contrib/hbwin/win_prn2.c
+ Changed to use native instead of fixed ANSI version of win API calls.
; Please review me, all these are critical low level functions,
so any mistakes can be deadly.
; TODO: Remaining dynamic versions, although maybe for dynamically
loaded win API functions it's better to stay with ANSI
version for compatibility.
- source
+ src
* src/Makefile
* src/dynlib/mt/Makefile
* src/dynlib/Makefile
* INSTALL
* Makefile
* ChangeLog
* harbour.spec
* mpkg_tgz.sh
* Renamed 'source' dir to 'src' to move closer to other FOSS
projects. It's also easier to type, plus it has the side
effect that some cmdlines will be shorter in the
build process.