* harbour/include/hbstack.h
* harbour/src/vm/estack.c
% declare hb_stack TLS pointer in MT HVM as static when HVM is compiled
with HB_HVM_ALL=yes
* harbour/src/compiler/hbcomp.c
! added protection against multiple freeing the same expression on
some errors in compiled code. It's necessary after removing reference
counters which made such protection indirectly. It fixed bug reported
by Teo.
* harbour/include/hbsetup.h
! check GCC version for hot and cold function attribute macros
* src/rtl/filesys.c
! Fixed fs_win_get_drive() to return zero (instead of -1)
when drive letter wasn't returned by Windows API.
(it's not clear what is the proper error behavior here)
! Fixed fs_win_set_drive() to apply upper limit on input
parameter.
* contrib/rddsql/sddfb/sddfb.c
* Minor formatting.
* src/rtl/filesys.c
+ Using direct Windows API instead of compiler specific
C RTL functions to get/set current disk.
; Please review.
- Deleted one Windows TODO: setmode() to be convered to
direct Windows API call. This translation is done in
C RTL, so Windows API cannot be used.
; There is no remaining non-standard (compiler specific)
C RTL function usage on the Windows platform AFAICT.
* contrib/hbmysql/tmysql.prg
* Formatting.
* src/vm/estack.c
* include/hbstack.h
% hb_stackDispLocal() internal debug function made static,
and guarded with HB_VM_DEBUG (pls change it to something
better if there is one), so it's not included in every
regular build and final executable.
* harbour/src/compiler/hbmain.c
* harbour/src/compiler/harbour.y
* harbour/src/compiler/harbour.yyc
* use hb_compGetFuncID() to detect reserved function names
* harbour/include/hbapi.h
* harbour/src/common/Makefile
- harbour/src/common/reserved.c
- removed not longer used hb_compReservedName() function
* harbour/include/hbcomp.h
* harbour/include/hbcompdf.h
* harbour/include/hbexprop.h
* harbour/include/hbexpra.c
* harbour/include/hbexprb.c
* harbour/src/common/expropt1.c
* harbour/src/compiler/hbcomp.c
* harbour/src/compiler/harbour.y
* harbour/src/compiler/harbour.yyc
* harbour/src/macro/macro.y
* harbour/src/macro/macro.yyc
* harbour/src/macro/macro.yyh
+ added new type of expression: SETGET
% eliminated reference counter in expressions
(this code was never fully safe because expression optimizer was not
respecting multiple references)
% replaced all HB_COMP_EXPR_DELETE() macro usage with HB_COMP_EXPR_FREE()
and deleted HB_COMP_EXPR_DELETE() macro
- removed not longer used hb_compExprClone()
Above modifications reduce a little bit total memory consumed by
compiler and macrocompiler giving also some minor speed improvement.
* harbour/ChangeLog
* marked TODO for above modification as DONE.
* src/rtl/hbini.prg
* Deleted several unnecessary empty lines at EOF.
* INSTALL
* Minor.
* include/dbinfo.ch
* Formatting.
+ include/hb.ch
* include/Makefile
+ Added Harbour header which #includes commonly used in
applications.
It also enables us to easily extend standard set of macros
and constants.
* contrib/hbide/idesaveload.prg
* "hbide.set" -> "hbidewnd.ini". At least it uses standard
extension. Still wrong solution and a remaining TOFIX.
* harbour/src/vm/macro.c
! fixed buffer overflow caused by wrong pointer type
( 'HB_ULONG*' instead of 'int *' )
* harbour/src/vm/set.c
! fixed bug in MT mode - when new thread was created then _SET_PATH
setting was not cloned but wrongly shared with parent thread - many
thanks to Rossine for the information
* src/rtl/diskspac.c
* src/rtl/disksphb.c
* contrib/hbwin/wapi_winbase.c
+ Added trick to make dynamic calls to WIDE API functions via
UNICOWS.DLL in UNICODE (default) builds when running on Win9x
systems. This fixes DISKSPACE(), HB_DISKSPACE() and
WAPI_GETLONGPATHNAME() in this scenario. (IOW this patch
makes these calls work in UNICOWS situations)
* src/rtl/hbsocket.c
* bin/hb-mkdyn.sh
* bin/hb-func.sh
* utils/hbmk2/hbmk2.prg
* config/win/global.mk
+ Restored to work with ws2_32.dll. (instead of wsock32)
* INSTALL
+ Added information on Win9x/ME support.
* src/rtl/diskspac.c
* src/rtl/disksphb.c
+ Added comment about the reason why GetDiskFreeSpaceEx()
is called dynamically (win95 first edition support).
+ Added support for HB_NO_WIN95 build-time flag to drop
Win95 compatibility. Unfortunately current dynamic load
trick fails with UNICOWS, returning zero for disk
space related calls in this scenario. If we drop the
dynamic call, we lose support for Win95 first edition,
but these functions will work properly on Win95b/98/ME
in return. I'm still thinking about it, but maybe it's
better to drop Win95 first edition support altogether
and make newer versions work properly. Any opinions?
* contrib/hbwin/wapi_winbase.c
* contrib/hbwin/wapi_wingdi_font.c
! Fixed to use WIDE/ANSI versions of dynamically executed
functions according to UNICODE setting.
* bin/hb-mkdyn.sh
* bin/hb-func.sh
* utils/hbmk2/hbmk2.prg
* config/win/global.mk
! Stepping back to link against wsock32 instead of ws2_32.
The only reason is Win95 (even OSR2) compatibility.
This is a little bit less efficient unfortunately.
* src/rtl/hbsocket.c
! Fixed to use WSAioctl via dynamic call for non WinCE
builds, and if HB_NO_WIN95 macro is no defined.
WSAioctl is present in ws2_32.dll, which .dll isn't
available on Win95.
; Not tested since I don't know how to test it, pls
review and test.
; NOTE: There seem to exist a package which add ws2_32
support for Win95, but I couldn't find it, if
someone has, we can drop this ugly trick and
simply document the requirement.
* src/rtl/gtwin/gtwin.c
* Formatting.
* src/rtl/gtwin/gtwin.c
! Added workaround for MS confirmed (but forever unfixed)
UNICOWS ReadConsoleInput() bug, which caused reported
dead keyboard when running UNICODE+UNICOWS apps on Win9x.
% Optimized to cache Win9x detection flag.
* include/hbapi.h
* src/common/hbver.c
+ Added hb_iswin2k() low-level function to detect
if running under Windows 2000 or newer.
* include/hbextern.ch
* src/rtl/version.c
+ Added HB_OSISWIN2K() .prg level function.
* src/rtl/gtwin/gtwin.c
* src/rtl/gtwvt/gtwvt.c
* contrib/gtwvg/gtwvg.c
* contrib/gtwvg/wvggui.c
* examples/gtwvw/gtwvw.c
* contrib/hbwin/win_prn2.c
* contrib/hbwin/win_prn3.c
% Changed to use hb_iswin*() API instead of implementing
version detection locally.
* contrib/hbmysql/mysql.c
* contrib/hbpgsql/postgres.c
+ Added my partial copyright.
* contrib/hbpgsql/tests/tstpgrdd.prg
* Formatting.
* contrib/hbpgsql/postgres.c
! Fixed to define all .prg level functions regardless
of pgsql lib it's built against. They return
permanent failure in this case.
! Fixed PQCREATETRACE() to return NULL pointer instead
of NIL for static builds.
! PQFREECANCEL() marked with HB_LEGACY_LEVEL3.
* contrib/hbwin/win_os.prg
+ Using HB_OSISWIN2K() core API.
* contrib/hbide/ideprojmanager.prg
* Minor alignment.
* contrib/hbtip/encmthd.c
* contrib/hbtip/encurl.prg
* contrib/hbtip/encb64.prg
! Cleaned this quite strange and dangerous hack which made the
exact nature of the logic fully hidden for anyone expecting
regular programming techniques. I even reimplemented QP
encoding not knowing about it.
Now the class/function interface is completely standard
without any hidden interdependencies and internal logic
to access class vars from C level function and mapping C
level functions as methods.
Now it's possible to replace these TIP specific encoder/decoder
functions with core ones, or move these ones to core.
INCOMPATIBLE: Old function names have been changed from
TIPENCODER*_[DECODE|ENCODE]() to __TIP_*_[ENCODE|DECODE]().
; TOFIX: Old C implementation of QP encoding/decoding doesn't
seem to work.
; TODO: Try eliminating redundancy in base64 encoding/decoding
between hbtip and core.
* contrib/hbtip/cgi.prg
* contrib/hbtip/url.prg
* contrib/hbtip/httpcli.prg
* Changed to use new internal function names for encoding/decoding.
* src/rdd/dbf1.c
* Minor formatting.
* src/vm/hvm.c
* include/hbapi.h
* Marked hb_synEval public symbol with HB_LEGACY_LEVEL3
* src/rtl/gtwin/gtwin.c
! Copyright header update.
* src/rtl/objfunc.prg
* include/hboo.ch
* Minor cleanup and formatting.
* INSTALL
* Minor refinement in wording.
* contrib/hbide/hbide.prg
* contrib/hbide/ideactions.prg
* contrib/hbide/idedocks.prg
! "Codec" -> "Encoding" in a few more places.
! "..." added to some more menu items.
! Double "(.ext)" text in filetypes in open project dialog.
; Please review me.
* harbour/include/hbxvm.h
* harbour/src/compiler/gencc.c
* harbour/src/vm/hvm.c
% added few functions increasing the execution speed of some PRG code
compiled with -gc3 switch
* src/common/hbverdsp.c
% "Language options" merged into "Build options"
* src/rtl/gtwin/gtwin.c
- Deleted not working undocumented SetConsolePalette() code sections.
* HB_GTI_PALETTE will return zeroes (black) on platforms/builds which
don't support console palette API.
+ Enabled SetConsoleMenuClose() undocumented call in default builds.
It seems so simple function that it's unlikely it will change
(worst case it will be deleted). Return value confirmed to be
BOOL (don't ask how).
This feature requires Windows 2000 for final apps, no build-time
requirement.
Can be disabled using HB_GTWIN_USE_SETCONSOLEMENUCLOSE_OFF macro.
% Minor optimization.
* contrib/hbwin/win_reg.prg
! Changed to use local emulation of BIN2U() instead of XPP
specific original implementation.
* src/rtl/gtwin/gtwin.c
+ Added more code (probably the ugliest I've ever had a chance
to create while touching Windows API) for undocumented
SetConsolePalette() hack, following Saulius Zrelskis's
suggestion. Now it doesn't GPF, but it does nothing else
either (could be wrong SYSPAL_ constant, could be anything).
From this point I'll let others continue, or delete all
undocumented code sections.
* src/rtl/gtwin/gtwin.c
+ Added HB_GTI_PALETTE support for GTWIN. Requires Vista
system or newer at runtime and requires Vista compatible
SDK at build-time (this is MSVC newer versions or older
versions with newer SDK). Unfortunately it cannot work
with mingw and possibly other C compilers until they
add support.
+ Added to set MS-DOS-like colors for GTWIN on Vista and
newer systems (same requirements as above).
+ Added experimental undocumented SetConsolePalette()
support for non-Vista systems and non-Vista SDKs,
but it GPFs and doesn't support reading palette, so
overall it's not enough for Harbour. I will let it there
in case someone wants to deal with it and delete it
after a few days.
* contrib/rddads/ads1.c
* Minor formatting.
* src/common/hbver.c
* include/hbapi.h
+ Added hb_iswinvista() to detect Vista and newer Windows versions.
* src/rtl/version.c
* include/hbextern.ch
+ Added HB_OSISWINVISTA() .prg level function with above meaning.
* contrib/hbwin/win_os.prg
% Changed to use HB_OSISWINVISTA() instead of hbwin specific
WIN_OSISVISTAORUPPER().
* contrib/rddsql/sddoci/sddoci.c
! Fixed OCILIB initalization to make OCI_GetLastError() work.
(Thanks to OCILIB author Vincent Rogier for the report
and fix)
* src/rtl/gtwin/gtwin.c
% Simplified the way close button status is retrieved (based
on code posted Saulius Zrelskis)
+ Added code to disable 'close' menu also. This is using
undocumented Windows API call, so by default the logic
is disabled, and can be enabled with HB_GTWIN_UNDOC_WINAPI
macro. (Thanks to Saulius Zrelskis for this API tip)
(NOTE: All 'close' controls are controlled by HB_GTI_CLOSABLE)
* harbour/include/hbcompdf.h
* harbour/src/vm/macro.c
% changed HB_PCODE_INFO structure to eliminate one memory allocation
in macro compiler
* harbour/include/hbapi.h
* harbour/include/hbvm.h
* harbour/src/vm/codebloc.c
* harbour/src/vm/itemapi.c
* harbour/src/vm/hvm.c
* changed second parameter in hb_codeblockGet*() function to 'int'
* merged codeblock execution context setting into one function
hb_vmDoBlock() and removed hb_codeblockEvaluate()
+ added new internal function hb_vmEval()
* harbour/src/vm/arrays.c
% use hb_vmEval()
* harbour/src/macro/macrolex.c
* added missing const to maro text declaration
* harbour/tests/speedtst.prg
! fixed to work with CLIP and xHarbour after we changed
SECONDSCPU() to HB_SECONDSCPU() - all these compilers and FlagShip
have SECONDSCPU() function
* src/common/hbffind.c
* hb_fsFindNextLow() to work reliably in my environment needs
OBJ_TILE memory. I've found no documentation about this
issue, maybe it's caused by old LAN Manager code when searching
for files on network shares.
* contrib/rddsql/sddodbc/sddodbc.c
+ Added support to return any size of string buffer from ODBC.
! Fixed typo in prev modification.
* src/rtl/gtwvt/gtwvt.c
! Reverted close/SETCANCEL/HB_GTI_CLOSABLE behavior to
match the old one and that of other GTs.
Also see:
2008-06-25 11:49 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
Please use HB_GTI_CLOSABLE and HB_GTI_NOTIFIERBLOCK
to control GUI window close behavior.
* harbour/src/rdd/dbfntx/dbfntx1.c
* harbour/src/rdd/dbfnsx/dbfnsx1.c
* harbour/src/rdd/dbfcdx/dbfcdx1.c
! make linear scan in template tags to detect position of current
record in tag after GOTO() operation - SIX3 compatible behavior
* contrib/rddsql/sddoci/sddoci.c
! Fixed handling of numeric types widths and decimals.
; This marks last known TODO/TOFIX as DONE.
* src/vm/extrap.c
+ Minor
* harbour/include/hbcomp.h
* harbour/include/hbcompdf.h
* harbour/include/hbmacro.h
* harbour/include/hbexpra.c
* harbour/include/hbexprb.c
* harbour/src/common/funcid.c
* harbour/src/common/expropt1.c
* harbour/src/compiler/hbmain.c
* harbour/src/compiler/harbour.y
* harbour/src/compiler/harbour.yyc
* harbour/src/compiler/harbour.yyh
* harbour/src/vm/macro.c
+ added all reserved and restricted in Clipper functions to
hb_compGetFuncID()
+ extended hb_compGetFuncID() to expand short names of reserved functions
+ extended hb_compGetFuncID() to set function flags
* store expanded function name, ID and flags in HB_ET_FUN* expressions
% modified compiler and macrocompiler code to use function flags and
expanded names set by hb_compGetFuncID(). It allowed to eliminate
calling hb_compReservedName() for function call expressions giving
some small but noticeable speed improvement i.e. in macrocompiler.
* contrib/hbodbc/odbc.c
* contrib/rddsql/sddodbc/sddodbc.c
! Silenced warnings.
* contrib/rddsql/sddoci/sddoci.c
* contrib/rddsql/sddoci/tests/test1.prg
+ Finished type mapping and value translation.
; Not being an Oracle user, I only have the few sample
tables, so no testing was made with these types.
; TOFIX: decimal position retrieval is currently wrong.
; TOFIX: date/time/timestamp doesn't seem to get through.
* config/win/global.mk
* config/rules.mk
* Moved HB_BUILD_UNICODE handling here for win platform,
to allow disabling it for potential 3rd party libs which
don't support UNICODE mode.
* src/common/hbffind.c
* Formatting.