* src/compiler/cmdcheck.c
! added workaround for what it seems like a clang bug in latest Apple XCode 4.1
'Apple clang version 2.1 (tags/Apple/clang-163.7.1) (based on LLVM 3.0svn)',
manifesting in this error:
---
/Developer/usr/bin/clang -I. -I../../../../../include -fno-common -W -Wall -O3 -o cmdcheck.o -c ../../../cmdcheck.c
clang: error: unable to execute command: Segmentation fault: 11
clang: error: clang frontend command failed due to signal 1 (use -v to see invocation)
---
The fix simply introduces a new variable to use ptr reference instead of
indexed vector access in one specific loop.
Please review/refix it, I didn't make functional tests.
* harbour/src/vm/hvm.c
! added protection against self-recursive iterating in code like:
FOR EACH var in @var
[...]
NEXT
Now RTE is generated in such case instead of GPF
* include/extend.api
* include/harbour.hbx
* include/hbdefs.h
* include/hbapi.h
* include/hbvm.h
* include/hbapigt.h
* include/clipdefs.h
- src/pp/pplib3.c
* src/pp/Makefile
* src/vm/hvm.c
* src/rtl/hbtoken.c
* src/rtl/inkey.c
* src/rdd/usrrdd/usrrdd.c
* contrib/hbmysql/hbmysql.hbx
- contrib/hbmysql/mysqlold.c
* contrib/hbmysql/mysql.c
* contrib/hbmysql/hbmysql.hbp
* contrib/hbmysql/mysql.ch
* contrib/hbpgsql/hbpgsql.hbx
* contrib/hbpgsql/postgres.c
* contrib/hbwin/hbwin.hbp
* contrib/hbwin/hbwin.hbx
- contrib/hbwin/legacy.prg
- contrib/hbwin/legacycd.c
- contrib/hbwin/legacyco.c
- contrib/hbwin/legacycp.c
* contrib/hbodbc/hbodbc.hbx
- contrib/hbodbc/odbcold.c
* contrib/hbodbc/odbc.c
* contrib/hbodbc/hbodbc.hbp
* contrib/hbtip/utils.c
* contrib/hbtip/hbtip.hbx
* deleted things marked with HB_LEGACY_LEVEL3, finishing cleanup
job started many years ago.
; this also means that windows.h and os2.h will no longer be
included by Harbour headers, HB_OS_WIN_USED is thus ineffective,
so if someone needs these headers to access system APIs, they
should be manually included in each source file. Some old
hacks have also been removed which disabled some Clipper
compatibility macros/types in compatibility headers (clipdefs.h, *.api),
if someone uses these alongside windows.h/os2.h inclusion, it will
be broken, here the strategy is to move to Harbour types and
Harbour API headers, simply Clipper headers and newer OS headers
are not compatible.
; HB_DONT_DEFINE_BASIC_TYPES is not effective anymore.
; INKEY_RAW is no more, use HB_INKEY_RAW instead.
; NEXTKEY() hidden parameter extension is disabled. Use HB_KEYNEXT()
Harbour alternative which has it.
; Some legacy PP functions are no more.
; hb_vmPushState()/hb_vmPopState() APIs were now permanently deleted.
; __STR*() token handling legacy functions are no more, use native HB_TOKEN*()
ones instead.
; WRITEBHEADER in USRRDD is no more, WRITEDBHEADER is the replacement.
; hbmysql, hbodbc compatibilty and deprecated functions were deleted
; hbwin compatibility functions were deleted. If there is demand, mainly to
help migrating xhb users, they can be readded to xhb lib by interested
developers, now deleted code should be changed to fall back to dummies
on non-Windows builds.
; some deprecated hbpgsql functions were deleted
; hbtip HB_BASE64() is deleted. Use core HB_BASE64ENCODE() instead.
; Anyone affected by above changes has the option to stick with 3.0.x Harbour
versions or to update their source code according to above instructions
(or instructions included in past ChangeLog entries)
; Some fallouts in Harbour build is possible after these changes
* src/rtl/gtwvt/gtwvt.c
* contrib/gtwvg/gtwvg.c
! fixed to use LONG instead of DWORD for GetWindowLong() values
! fixed to use LONG_PTR instead of LONG for GetWindowLongPtr() values
on systems requiring it, f.e. win64 builds
; review me pls
; TODO: GTWVG would have to be synced with recent GTWVT changes
* harbour/src/macro/macrolex.c
! added missing YY token assignment I removed by mistake in last
macrolex modification.
This modification fixes problem with extended string decoding
by macrocompiler.
* harbour/config/global.mk
! added missing $(HB_HOST_BIN_EXT) in wildcard command used of
user HB_CCPATH/HB_CCPREFIX verification.
* src/rtl/gtwin/gtwin.c
! using HB_ prefixed name for locally defined
CONSOLE_SCREEN_BUFFER_INFOEX structure related names
and then these are mapped to Windows names using #define
(untested)
! disabled whole above logic since it's not used currently
anyway. this should fix compilation with mingw64-tdm
and some other mingw64 builds with Windows headers
featuring CONSOLE_SCREEN_BUFFER_INFOEX structure
; review me please
* harbour/include/hbgtinfo.ch
* harbour/src/rtl/gtwvt/gtwvt.c
+ added support for HB_GTI_MAXIMIZED
Patch created by Heinz V. Bergen - thank you.
* harbour/src/common/hbstr.c
% simplified hb_strAt() code and added missing stop condition.
This modification also quite nicely optimized the average speed
of AT() function and $ operator.
* src/rtl/strtran.c
! minor in webpage URL
* src/rtl/gtwvt/gtwvt.c
! Patch from Heinz V. Bergen, fixing full screen and alt-enter
GT features when GTWVT windows was not open yet, also fixing
screen positioning/sizing regression.
* src/rtl/inkey.c
* include/harbour.hbx
+ added HB_KEYLAST() which allows to pass a mask
(I'm not sure if this is ultimate solution, but there is goes
for now. Pls remove it if there is better one)
* package/winuni/RELNOTES
* updated 3rd party version numbers
* harbour/src/rtl/strtran.c
! rewritten STRTRAN() to fix incompatibilities with Clipper and fatal
performance of original code.
This implementation is over 3 times faster then the previous code.
* src/rtl/gtwvt/gtwvt.h
* src/rtl/gtwvt/gtwvt.c
* tests/wvtext.prg
+ Massive GTWVT patch from Heinz V. Bergen. Thank you very much.
Details:
- fixed Alt-Enter for full screen, will no longer send the
K_ENTER to the Input queue.
- HB_K_RESIZE only sent if the Rows/Cols size actually changed.
- Clicking Maximize (top right corner) button, will maximize window
and change to Restore button, then clicking Restore button will
restore the window to its previous size.
- Dbl-clicking Title-Bar will maximize, then Dbl-Clicking Title
bar again will restore.
- Resizing window when in RESIZEMODE_FONT, will dynamically display
the resulting size changes in real time.
- All Maximize / Restore / Sizing works in RESIZEMODE_ROWS as would
be expected.
- Windows 7, dragging Window (Title-Bar) to top of screen will maximize,
then dragging maximized window's Title bar down will Restore
to previous size.
- Windows 7, dragging Window (Title-Bar) left or right until mouse
pointer hits the edge of the screen will size and dock to the left
or right half of the screen, then dragging title bar away from docked
position will restore the Window to its previous size.
- Windows 7, resizing top or bottom until edge of screen hit
(or dbl-clicking) will resize for maximum height. Then dragging
title bar away will restore to previous size.
- Before, depending on monitor's resolution, and when using
Courier New or Terminal font, maximizing would fail due to Font
metrics being incompatible with the Window's size or maybe due to
math issues, I was able to resolve by slightly adjusting the Font's
width or height down and then trying again until successful.
- Pressing Alt-Enter (when enabled) for full screen mode and then
pressing Alt-Enter again will restore Window to previous
non-maximized size.
- extended GT test app
; Please make test and report any experiences on devel list
* harbour/include/hbapifs.h
* harbour/src/rtl/filesys.c
% removed unnecessary PID setting in POSIX file lock function.
+ added new C function:
int hb_fsLockTest( HB_FHANDLE hFileHandle, HB_FOFFSET nStart,
HB_FOFFSET nLength, HB_USHORT uiMode );
It allows to test file range lock status.
It returns -1 on error, 0 when lock can be set and value greater
then 0 if part of given range is locked by other process. In POSIX
systems this value is PID of current lock owner. In other systems
it's always 1.
In uiMode only FLX_SHARED bit is significant.
* harbour/include/hbapifs.h
* harbour/src/rtl/filebuf.c
+ added new C function:
int hb_fileLockTest( PHB_FILE pFile, HB_FOFFSET nStart,
HB_FOFFSET nLen, int iType );
It's redirected to hb_fsLockTest()
* harbour/contrib/hbnetio/netio.h
* harbour/contrib/hbnetio/netiocli.c
* harbour/contrib/hbnetio/netiosrv.c
* harbour/contrib/hbmemio/memio.c
+ implemented hb_fileLockTest() low level code
* harbour/include/dbinfo.ch
+ added DBI_LOCKTEST
* harbour/src/rdd/dbf1.c
% small code simplification
+ implemented DBI_LOCKTEST
dbInfo( DBI_LOCKTEST [, <nRecNo> ] ) -> <nStatus>
returns corresponding results to C level hb_fsLockTest() function.
If current workarea is already locked then 0 is returned.
If low level FS is located on POSIX system (accessed directly or by
HBNETIO) then value greater then 0 is PID of current lock owner.
If the lock is hold by aliased area or other thread of calling
process then <nStatus> is current PID. In Other systems 1 is returned
when lock cannot be set in current workarea.
If <nRecNo> is given then the test is for RLOCK() otherwise FLOCK()
operation.
* src/vm/thread.c
* upped sleep timeout in *nix version of hb_threadReleaseCPU() to 20 ms
it halves CPU consumption. pls revert/comment if you notice
causing this any harm.
* harbour/src/vm/thread.c
* set sleep timeout in *nix version of hb_threadReleaseCPU() to 10 ms
* harbour/src/compiler/hbpcode.c
! fixed typo which could cause compile time crash when debugger code
is generated (-b) and file name with extenssion has only one or
two characters
* harbour/include/hbcompdf.h
* harbour/src/compiler/hbmain.c
* harbour/src/compiler/hbstripl.c
* harbour/src/compiler/harbour.y
* harbour/src/compiler/harbour.yyc
! removed old code designed to optimize line numbers generated in PCODE.
It cannot work correctly and in some cases it was generating HB_P_LINE
pcodes in wrong places.
% enabled new code for HB_P_LINE PCODEs optimization also in debugger (-b)
compilation so it can be used to replaced the old one.
* harbour/src/rtl/arc4.c
! changed size parameter passed by reference to sysctl() to size_t
! fixed WINCE builds
% enable pid checking only in *nix systems.
If system does not support fork() or compatible operation
(i.e. vfork(), clone()) then PID checking is completely useless.
* harbour/src/rtl/gtwvt/gtwvt.c
* pacified WINCE warnings
* harbour/contrib/rddads/adsx.c
! fixed potentially uninitialized pTag variable
* src/rtl/teditor.prg
! fixed regression occurred in commit:
2007-01-10 17:50 UTC+0800 Pritpal Bedi
reproducible using:
'memoedit(chr(13)+chr(10)+"abcdef"+space(50),1,1,2,20,,,90,,1,10,0,0)
and in the edit window, press <down> once and <left> ten times after
that. As you see, the edit windows shows incorrect data on the screen
now.'
Thanks to vbdasc for the report and fix.
* include/harbour.hbx
* src/rtl/hbrandom.c
* HB_RANDOMMAX() -> HB_RANDOMINTMAX()
; TOFIX: now broken under mingw in all places where HB_RANDOMINT()
is potentially called with larger than HB_RANDOMINTMAX()
value. This will be impossible f.e. in RANDOM() CT function.
* src/rtl/hbrandom.c
* src/rtl/hbrand.c
+ hb_random_block() changed to use ARC4 backend.
* examples/httpsrv/modules/showcounter.prg
% hb_ntos()
* harbour/src/rtl/valtoexp.prg
! fixed typo in recent modifications causing RTE in HB_VALTOEXP()
* harbour/contrib/hbwin/win_prn2.c
! allocate dynamic memory for print buffer in WIN_PRINTFILERAW()
32KB variable on process execution stack is potential source of
random GPFs in programs using deeper recursive calls and killer
for MT mode when smaller thread stack is allocated.
! fixed potential data lost in WIN_PRINTFILERAW() when not all data
is transfered in single WritePrinter() call
! interrupt printing in WIN_PRINTFILERAW() if WritePrinter() returns
error
* harbour/include/harbour.hbx
* harbour/src/rtl/hbrandom.c
! restored my old fix - it was correct and the results over RAND_MAX
range expected
+ added new PRG function:
HB_RANDOMMAX() -> <nRAND_MAX>
* harbour/src/rtl/gtwvt/gtwvt.c
! update font metrics after HB_GTI_FONTSIZE also when window is not
active yet - without it all other calculations are broken
* harbour/src/codepage/uc1250.c
* harbour/src/codepage/uc1251.c
* add some missing codes which are not officially defined but
MS-Windows uses them - I've just check it reading unicode values
from some fonts.
It also look that some fonts have VGA glyphs attached only to control
values at range 0-31 without their real Unicode representation. It's
the reason why they are not shown in GTWVT UNICODE builds. Pritpal
reported such problem recently.
This can be quite easy resolved by replacing hb_cdpGetU16Disp()
with hb_cdpGetU16() in gtwvt.c but it may cause that we lost control
characters in some other fonts. I would like to ask MS-Windows users
to makes some tests with such modified GTWVT and check if control
code are well shown with different fonts. If not then we can add
HB_GTI_* switch to enable/disable control codes to unicode values
translation.
* src/debug/debugger.prg
* src/rtl/valtoexp.prg
+ __dbgValToStr() support for type "T"
% RTrim( Str() ) -> Str() and hb_ntos()
% hb_VALTOEXP() minor optimization
! synced string representation of codeblocks and arrays
* formatting
; TODO: to show the address instead of "pointer"?
* src/rtl/arc4.c
! fixed for watcom (getpid)
! cast for msvc
! fixed for dmc (ms struct missing for win seed)
! fixed for bcc (inline disabled for this dead compiler, getpid)
! fixed warning for all non-unix, non-win targets
; TOFIX: it's also broken for watcom/dos and watcom/linux
Tamas, can you take a look at it?
* utils/hbmk2/hbmk2.prg
+ use HB_RAND32()
* src/rtl/Makefile
* src/rtl/hbrandom.c
+ src/rtl/hbrand.c
+ src/rtl/arc4.c
+ src/rtl/arc4.h
+ added C level arc4 API. adapted to Harbour by Tamas Tevesz,
original authors listed in sources
* moved HB_RAND32() function to separate source
* changed HB_RAND32() to use arc4 backend, which means it will
now return properly string random numbers
; arc4 code may need tweaks on some platforms (android f.e.),
pls test
* src/rtl/gtwvt/gtwvt.c
! fixed regression referred to in 2011-05-18 01:06 UTC+0200 Viktor Szakats
I'm still not exactly sure what's happening (besides I'm tired as hell),
but now it seems that it's not VK_RETURN override at fault, but composited mode
on Vista/7 which I enabled recently. Actually copy worked only
the selection was not visible.
Now I turn off composited on mark and select and renable when finished.
I imagine this is not proper solution though I don't have Bill Gates's number
to make a support call ATM.
+ reenabled VK_RETURN
* ChangeLog
* edited prev entry
* src/rtl/gtwvt/gtwvt.c
! fixed regression in:
2011-02-26 20:07 UTC+0100 Viktor Szakats / patch by Aleksander Czajczynski
VK_RETURN event override caused 'Mark and Copy' menu functionality
to break, it's no longer possible to select an area. Aleksander,
I'd appreciate if you could check and fix this.
For now I commented the VK_RETURN override (it may break some
fullscreen features)
* src/rtl/hbrandom.c
! fixed wrong random numbers being generated after:
2011-03-11 09:42 UTC+0100 Przemyslaw Czerpak
this is simple revert, Przemek pls recheck/refix original issue.
Values 0x????FFFF and 0x????0000 were returned from these calls:
hb_randomInt( 0xFFFFFFFF )
hb_randomInt( 0xFFFFFFFE )
hb_randomInt( 0x7FFFFFFF )
under mingw32 and mingw64 (both win and linux builds)
* include/harbour.hbx
* src/rtl/hbrandom.c
+ HB_RAND32() -> <32-bit random number>
; TOFIX: random numbers are broken under mingw 4.5.2, only high 16bits are random.
in all HB_RAND*() functions
* src/compiler/gencc.c
! hb_p_pushlong: conditional -gc3 generated code modified to
evaluate the condition at C compile time rather than .c
code generation time. This particular fix would pbly only
affect 16-bit cross builds, which we don't have any ATM.
; TOFIX: same in hb_p_pushlonglong
* harbour/src/rtl/gtxwc/gtxwc.c
* harbour/src/rtl/gtwvt/gtwvt.c
* harbour/contrib/xhb/hboutdbg.c
* harbour/contrib/xhb/xhbfunc.c
! use 'hb_cmdargARGVN( 0 )' instead of 'hb_cmdargARGV()[ 0 ]' to avoid
GPF when no arguments are initialized
* harbour/contrib/hbwin/hbolesrv.hbc
* use {allmingw} instead of {mingw} macro for MinGW64 builds
* harbour/src/codepage/Makefile
* harbour/src/codepage/uc646_yu.c
+ harbour/src/codepage/uc646yuc.c
* harbour/include/hbapicdp.h
+ added JUS I.B1.003 - Cyrillic script variant of ISO-646-YU
for Serbian and Macedonian language
* harbour/src/codepage/Makefile
+ harbour/src/codepage/cpsr646.c
+ harbour/src/codepage/cpsr646c.c
* harbour/include/hbcpage.hbx
+ added SR646 and SR646C Harbour codeapges.
Both code pages uses the same 8-bit representation but different
unicode values - SR646 uses Latin script and SR646C Cyrillic script.
It means that it's useless to make any translations between SR646
and SR646C because both versions uses the same ASCII values but they
can help in translation to other encodings or CPs, i.e. to convert
some Serbian text in one of the above CPs to Latin letters in UTF8
encoding then it's enough to make:
hb_strToUTF8( <cText>, "SR646" ) -> <cUtf8LatinText>
and for conversion to UTF8+Cyrillic:
hb_strToUTF8( <cText>, "SR646C" ) -> <cUtf8CyrillicText>
* include/harbour.hbx
* src/vm/runner.c
+ HB_HRBGETFUNLIST() -> <aArray>: New function posted to the
list by Francesco Saverio Giudice
(NOTE: I changed the name a little bit)
* tests/gfx.prg
! fixed console output. Patch by Tamas Tevesz
* changed rest of ? commands to outstd()
* src/vm/set.c
* _SET_EOF default set to .T. on *nix to match other plaforms
(and Clipper I might guess)
CHECKME!
* formatting
! missing 'break;'. it didn't cause error, anyhow pls check me
maybe it was intentional (in 'case HB_SET_PRN_CON:' branch)
CHECKME!
* contrib/hbunix/hbunix.hbp
* contrib/hbunix/hbunix.hbx
+ POSIX_SLEEP( <n> ) -> <n>
* contrib/hbcurl/hbcurl.ch
* contrib/hbcurl/core.c
+ added changes from latest libcurl version (untested with
latest version)
* utils/hbmk2/hbmk2.prg
! fixed symbol names in hbx generation for watcom/{linux|dos|os2}