Commit Graph

240 Commits

Author SHA1 Message Date
Przemysław Czerpak
b322589103 2014-09-10 00:51 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/vm/hvm.c
    ! added missing HB_STACK_TLS_PRELOAD - thanks to Teo
2014-09-10 00:51:46 +02:00
Przemysław Czerpak
dfb6288137 2014-09-09 20:49 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/hbvm.h
  * src/vm/hvm.c
    + added new HVM function: hb_vmTryEval()
      This function tries to execute given block or function
      inside BEGIN SEQUENCE / RECOVER oErr / END SEQUENCE statement.
      It return HB_TRUE if it was executed without any problem and
      HB_FALSE otherwise. Result or RTE object is stored in 1-st
      parameter and should be freed by the caller using hb_itemRelese()

  * src/debug/dbgentry.c
    ! use hb_vmTryEval() instead of hb_itemDo() to evaluate trace point
      expressions. Now debugger does not crash when user sets tracepoint
      expression which cannot be evaluated in executed context.
    ! allow to use expressions with more then 99 variables
    ! added missing protections against GPF when wrong parameters are
      passed to __dbg*() functions
    * keep original trace and watch point expression for farther
      processing
    * replaced IS_IDENT_*() macros with HB_IS*IDCHAR()
    + added new debuger function:
         __dbgGetWatchPoints() -> <aWatchTracePoints>
      <aWatchTracePoints> contains subarrays describing trace and watch
      points:
         { <cExpression>, <lTracePoint>, <lValid>, <xResult> }
      It was the last function necessary to extract all information
      about debugged context from core internals. Now it's possible
      to create fully functional standalone debugger without storing
      and updating locally any information about debugger state.
      All such information can be accessed at any time using __dbg*()
      functions.
      It should greatly simplify creating 3-rd party debuggers like
      HWDebug or HBQTDebug.

  * src/debug/debugger.prg
    ! fixed callstack window updating during tracing and stepping.
      Tanks to Rolf for reporting the problem.
2014-09-09 20:49:09 +02:00
Przemysław Czerpak
e31d7b4ca7 2014-09-08 23:40 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* contrib/hbct/ctwin.c
    ! fixed typo in window area checking when current window is 0
      It fixes problem with debugger reported by Rolf.

  * src/debug/dbgentry.c
    % few optimizations
    ! added few protections against GPF when wrong parameters are passed
    ! fixed missing support for symbol, date and timestamp values in
      tracepoints
    + added __dbgCntWatch()

  * src/rtl/filesys.c
  * src/rtl/hbproces.c
    * pacified warning in more aggressive way for newer GCC versions

  * include/harbour.hbx
    * refreshed
2014-09-08 23:40:20 +02:00
Przemysław Czerpak
a777fd8568 2014-09-05 13:24 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/harbour.hbx
  * src/rtl/val.c
    + added new function: hb_Val( <cStr> [, <nLen> ] ) -> <nVal>
      it works like a val but set length for numeric result to passed string
      length or <nLen> parameter if is large enough.

  * src/rtl/tget.prg
    ! use hb_Val() instead of Val() for numeric GETs to replicate Clipper
      behavior for pictures longer then 10 characters.
2014-09-05 13:24:05 +02:00
Przemysław Czerpak
e41b3fa69a 2014-09-04 21:17 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rtl/itemseri.c
    * minor update in comments

  * contrib/hbct/ctwin.c
  * src/rtl/hbgtcore.c
    ! fixed GTCTW window handle save/restore on debugger activation
      I broke in 107b36e847
      Thanks to Rolf for the info and patch.

  * contrib/hbziparc/ziparc.prg
    * synced with Viktor's branch.
      This code should contain Rolf fixes. Please test.
2014-09-04 21:17:02 +02:00
Przemysław Czerpak
169f5f3767 2014-09-03 20:21 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rtl/gtwin/gtwin.c
    + added support for disabling [x] button of console window in older
      MS-Windows versions which do not have GetConsoleWindow() function,
      i.e. Win9x/ME
2014-09-03 20:21:09 +02:00
Przemysław Czerpak
2e65a28363 2014-08-27 18:19 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/hbserial.ch
  * src/rtl/itemseri.c
    + added HB_SERIALIZE_IGNOREREF flag.
      This flag fully disables logic used to detect multireferences to the
      same complex (sub)items like arrays or hashes. It increses the speed
      of serialization but serialized data does not contain any information
      about refences, i.e. aVal[ 1 ] and aVal[ 2 ] in code below:
         aSub := { 1, 2, 3 }
         aVal := { aSub, aSub }
      are serialized as separated arrays. Additionally items with cyclic
      references like:
         aSub[ 2 ] := aSub
      cannot be serialized at all with HB_SERIALIZE_IGNOREREF flag because
      it will create infinite serialization loop and crash with out of
      memory message.

  * src/rtl/itemseri.c
    % rewritten algorithm used to detect cyclic and multi references in
      serialized items. The original algorithm has very high overhead when
      huge arrays were serialized, i.e. serialization of array with 1'000'000
      of subarrays needed about 30 minutes on my i5@3.30GHz. Now it needs
      less then a second and this time is only a little bit bigger then
      used by serialization with HB_SERIALIZE_IGNOREREF flag.
      This modification improve performance also in other code using Harbour
      serialization mechanism like I18N files, HBNETIO, GTNET, ... when large
      arrays or hashes are saved or transmitted.

  * include/hbapi.h
  * include/hbapicls.h
  * src/vm/arrays.c
  * src/vm/classes.c
  * src/vm/hashes.c
  * src/vm/itemapi.c
    * replaced algorithm used to detect cyclic and multi references in
      array and hash clone operations with new one similar to current
      item serial code. The speed improvement for very large arrays is
      the same as in case of serialization code.

  * src/rtl/gtsln/mousesln.c
    ! typo in while loop - synced with Viktor's branch
2014-08-27 18:19:36 +02:00
Przemysław Czerpak
e222fc9080 2014-08-22 14:41 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/vm/hvm.c
    * map 0 and 1 byte length strings to the same addresses

  * src/vm/itemapi.c
    ! check also size if string addresses are the same
2014-08-22 14:41:21 +02:00
Przemysław Czerpak
24ae545b3e 2014-08-21 01:11 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* contrib/hbtip/mail.prg
    ! fixed missing 1-st adress in CC and BCC parameters - many
       for information about the bug and patch

  * contrib/hbtip/sendmail.prg
    ! typo in comment - thanks to Heinz V Bergen too

  * src/rtl/gtwvt/gtwvt.c
    * some minor modification to sync code with Vitkor's branch

  * src/vm/hvm.c
  * src/vm/itemapi.c
    * small optimization in string comparison
2014-08-21 01:11:26 +02:00
Przemysław Czerpak
0cc7212572 2014-08-19 11:11 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/debug/debugger.prg
    + implemented commmand window resizing with ALT+U and ALT+D keys
2014-08-19 11:11:36 +02:00
Przemysław Czerpak
107b36e847 2014-08-17 23:06 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/hbrddcdx.h
    * minor clarification in commnet

  * src/rtl/hbgtcore.c
    * do not save and restore SetColor() when debugger is activated and
      closed
2014-08-17 23:06:19 +02:00
Przemysław Czerpak
a1cbbb2cbf 2014-08-13 16:27 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/debug/dbgentry.c
  * src/debug/debugger.prg
  * src/debug/tbrwtext.prg
    * use one function to divide text per lines with the same rules
      as used in Cl*pper and Harbour PP.
    ! fixed input line size in SET edit window
    ! fixed validation in some input boxes
    * process only 1-st parameter in some commands just like Cl*pper does
    + added support for FILE OPEN <name> command
    ! fixed CALLSTACK ON | OFF command
    ! fixed NUM command
    + added support for VIEW <fileName> command
    + added support for LOCATE GOTOLINE <line> command
    + added support for LOCATE FIND <text> command
    + added support for RUN SPEED <num> command
    + added support for LIST WP|TP command
    + added support for BP <funcName> command
    + added support for DELETE ALL [TP|WP] and DELETE WP|TP <number>
      commands
    % few optimizations and some other minor fixes
2014-08-13 16:27:16 +02:00
Przemysław Czerpak
05fa5c0538 2014-08-11 13:54 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/debug/dbgbrwsr.prg
    ! fixed to not display last column out of browser area

  * src/debug/dbghelp.prg
  * src/debug/dbgmenu.prg
  * src/debug/debugger.prg
    * use strings to to locate help topics instead of hardcoded numeric
      offsets
    ! added support for topic specification in "HELP" command - Cl*pper
      compatibility
    ! allow to use FILE DOS (and F D shortcut) to activate OS Shell - Cl*pper
      compatibility

  * src/debug/dbgentry.c
    ! removed recent pseudo fix with memset() missing the last byte of
      allocated memory area since e59993bdb1.
      The original code was correct. In Harbour trailing 0 in all strings
      is set inside functions creating string items.

  * package/harbour.spec
    + added MXML library

  * package/mpkg_rpm.sh
    * respect HB_WITH_*=no and HB_WITH_*=local envvars
2014-08-11 13:54:18 +02:00
Viktor Szakáts
0c8947774b 2014-08-05 19:56 UTC+0200 Viktor Szakáts (vszakats users.noreply.github.com)
* src/debug/*
  + src/debug/en.txt
    * sync with 4d61fc5a25/src/debug
    * use DBS_* constants
    ! fixed to allow editing of CODEBLOCK types in hash/array/object elements
      as it was allowed in single variables
    ! fixed to detect all workareas not just the first arbitrary 512
    ! fixed memset() missing the last byte of allocated memory area
      since e59993bdb1
    + reworked help to store content in a text file out of the source code.
      It reduces binary size, makes translation possible, editing easier,
      source code leaner and easy to publish online.
    ! deleted help section explaining cld.exe
    * formatting, cleanups, optimization, translatability
2014-08-05 19:56:44 +02:00
Przemysław Czerpak
3f78fa0b6e 2014-08-01 02:04 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* extras/gtwvw/gtwvwd.c
    ! fixed typo in WVW_SETICON() - thanks to Ash

  * src/rdd/dbcmd53.c
    ! typo in comment

  * src/rtl/dateshb.c
    % use hb_retclen() instead of hb_retc() when size is well known.

  * src/rtl/valtoexp.prg
    % use hb_defaultValue()

  * src/vm/estack.c
    * minor cleanup

  * src/vm/fm.c
    * modified a little bit HB_MEMINFO structure to force strict alignment
    + added debug code covered by HB_FM_FORCE_REALLOC macro which forces
      allocateing new block in each hb_xrealloc() call
    ! protect realloc() in HB_FM_STATISTIC by mutex, it fixes issue #77.

  * src/rtl/hbproces.c
    % unlock HVM waiting for process in OS2 builds
    ! build array of argument passed to process in hb_processRun() in
      parent process not forked one. It fixes possible deadlock in forked
      process because memory is allocated to create arguments array and
      in MT program memory managers may use mutexes internally which can
      be cloned to forked process in locked state.
      It fixes seldom and random HBMK2 freezing during compilation
      with -jobs=<n> parameter.

  * utils/hbmk2/hbmk2.prg
    ! fixed race condition in concurrent C compiler execution (-jobs=<n>)
      with script file

  * src/debug/dbgentry.c
    ! fixed crash when wrong expression is used as tracepoint
    ! fixed expression analyzer to correctly recognized extended strings e"..."
    * formatting

  * src/debug/dbgbrwsr.prg
  * src/debug/dbghelp.prg
  * src/debug/dbgtarr.prg
  * src/debug/dbgthsh.prg
  * src/debug/dbgtinp.prg
  * src/debug/dbgtmenu.prg
  * src/debug/dbgtobj.prg
  * src/debug/dbgtwin.prg
  * src/debug/dbgwa.prg
  * src/debug/debugger.prg
    * added calls to ::NotSupported() method for some still missing
      functionality
    ! do not use SetColor() but directly pass colors to used objects
      and functions
    ! do not use SetPos() and Row()/Col() for core functionality - it was
      source of few minor bugs
    % enable cursor only in input objects and disable it just after
    % eliminated code to save and restore cursor position and shape
    ! fixed initial positioning in help window
    + implemented HiLite() and DeHiLite() methods in HBDbBrowser() class
    ! fixed positioning when end of source data is reached in browser
    % eliminated some redundant or completely useless code and comments
    % use some fully functional HBDbBrowser() features instead of manual
      encoding similar functionality
    ! validate watchpoint and tracepoint expressions
    % use SWITCH statements
    ! fixed expression presentation (added __dbgValToExp() and __dbgValToStr())
    ! fixed input for new expressions
    ! fixed browser scrolling in object inspector
    ! fixed inkey() processing inside debugger (ALT+D and ALT+C)
    ! fixed browsers highliting in WA inspector
    ! fixed hardcoded limit for 512 workareas in WA inspector
    ! fixed initial WA positioning in WA inspector
    * resized WA  inspector window
    * many other minor fixes and improvements
2014-08-01 02:04:07 +02:00
Przemysław Czerpak
6529610475 2014-07-11 15:33 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rtl/gtstd/gtstd.c
    ! fixed typo in for() loop counter (issue #75)
2014-07-11 15:33:32 +02:00
Przemysław Czerpak
2e24ca5fe9 2014-06-27 17:20 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rdd/delim1.c
  * src/rdd/sdf1.c
    + added support for importing TIME and TIMESTAMP fields
      from SDF and DELIM RDDs
2014-06-27 17:20:30 +02:00
Przemysław Czerpak
5a3e100f11 2014-06-27 12:45 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/common/hbfopen.c
    * use _wfopen() instead of fopen() in MS-Windows UNICODE builds of
      hb_fopen(). It means that now hb_fopen() makes exactly the same file
      name conversions as hb_fs*() Harbour RTL functions, i.e. hb_fsOpen()

  * contrib/hbmxml/core.c
    ! fixed unnecessary conversions to UTF8 used for file names passed
      to hb_fopen()

  * contrib/hbmzip/3rd/minizip/ioapi.c
  * contrib/hbmzip/3rd/minizip/minizip.dif
    ! fixed wrongly used hb_fopen() instead of fopen() what caused double
      file name conversions when 32-bit stdio API was used.
2014-06-27 12:45:47 +02:00
Przemysław Czerpak
97a23295d5 2014-06-26 18:42 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* contrib/hbwin/olecore.c
    + added some additional error codes to win_oleErrorText() function

  * contrib/hbwin/hbole.ch
    + added OLE error code definitions with WIN_* prefix for errors returned
      by win_oleErrorText()

  * contrib/xhb/xhb.hbx
  * contrib/xhb/xhbole.prg
    + aded new function OleDefaultArg()
    % minor simplification

  * src/rtl/itemseri.c
    * do not generate RTE when wrong string is deserialized.
      Now RTE 3016 is generated only when compressed data is deserialized
      and ZLIB is not linked with final binaries so users can easy locate
      the source of problem.

  * src/vm/garbage.c
    % added missing static in s_gcSpinLock declaration

  * src/rtl/hbi18n1.c
    * typo in comment

  * src/rdd/dbf1.c
  * src/rdd/dbffpt/dbffpt1.c
  * src/rdd/dbsql.c
    * formatting

  * src/rdd/usrrdd/rdds/logrdd.prg
  * src/rdd/usrrdd/usrrdd.c
  * src/rtl/checkbox.prg
  * src/rtl/getsys.prg
  * src/rtl/listbox.prg
  * src/rtl/menuto.prg
  * src/rtl/pushbtn.prg
  * src/rtl/radiobtn.prg
  * src/rtl/radiogrp.prg
  * src/rtl/scrollbr.prg
  * src/rtl/tbrowse.prg
  * src/rtl/tget.prg
  * src/rtl/tgetint.prg
  * src/rtl/tgetlist.prg
  * src/rtl/tmenuitm.prg
  * src/rtl/errapi.c
  * src/rtl/hbgtcore.c
  * src/rtl/hbi18n1.c
  * src/rtl/hbinet.c
  * src/rtl/idle.c
  * src/rtl/math.c
  * src/rtl/setkey.c
  * src/vm/asort.c
  * src/vm/hashfunc.c
  * src/vm/thread.c
    * accept any EVAL item not only codeblocks. Actually it means that
      also SYMBOL items are accepted but in the future we may extend it
      and accept also objects of classes with :eval() message.

  * src/rtl/tget.prg
    ! fixed GET default PICTURE for TIMESTAMP type
      fixes https://github.com/harbour/core/issues/65
      2014-05-11 00:05 UTC+0200 Viktor Szakats
    ! fixed GET colors when _SET_INTENSITY == .F.
      2014-04-22 02:35 UTC+0200 Viktor Szakats
    % use Stuff() instead of different combinations of Left() and SubStr()

  * include/harbour.hbx
  * src/rtl/left.c
    + added new function to replace "=" operator without the SET EXACT ambiguity
      in its most common pattern of usage:
         hb_LeftEq( <cString1>, <cString2> ) -> <lResult>
      it's equivalent to this expression, but faster and shorter:
         ( Left( <cString1>, Len( <cString2> ) ) == <cString2> )
      2014-01-22 03:09 UTC+0100 Viktor Szakáts
    + added hb_LeftEqI(). Same as hb_LeftEq() but case-insensitive.
         hb_LeftEqI( <cString1>, <cString2> ) -> <lResult>
      2014-02-04 13:38 UTC+0100 Viktor Szakáts

  * include/harbour.hbx
  * src/rtl/chruni.c
    + added hb_BRAt(). Same as hb_RAt() but for raw/binary strings
      2014-06-25 19:54 UTC+0200 Viktor Szakats

  * contrib/sddsqlt3/core.c
    ! fixed missing first record of query
      2013-11-08 21:43 UTC+0100 Viktor Szakats

  ; many of above modification was borrowed directly or try to follow some
    changes in Viktor's branch - thanks.
2014-06-26 18:42:13 +02:00
Przemysław Czerpak
8505ffa043 2014-06-16 15:38 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rtl/hbgtcore.c
    ! fixed typo in previous commit
    ; minor formatting
2014-06-16 15:38:44 +02:00
Przemysław Czerpak
ce68dda8ff 2014-06-12 19:29 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rtl/hbgtcore.c
    + allow to use GTNUL at runtime just like any other GT driver, i.e.
      creating dynamically new GT and use it as default thread GT.
2014-06-12 19:29:42 +02:00
Przemysław Czerpak
051eaea0a9 2014-06-04 14:34 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/vm/classes.c
    ! added missing const to variable declaration in profiler code - problem
      reported by Ron Christie
2014-06-04 14:34:09 +02:00
Przemysław Czerpak
786ba57352 2014-05-26 16:15 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/common/hbfsapi.c
  * src/rtl/filesys.c
  * src/rtl/filebuf.c
  * contrib/hbmzip/mzip.c
  * contrib/xhb/filestat.c
    ! if available always use stat64() instead of stat() in *nixes builds.
      On 32-bit platforms stat() fails for larger files (>2GB).
      It should fix problem reported by Lorenzo.
2014-05-26 16:15:46 +02:00
Przemysław Czerpak
51b88dd1ba 2014-05-23 17:01 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rtl/filebuf.c
    ! fixed bad typo inside hb_fileIsLocalName() - result was reverted.
      Many thanks to Juan Gálvez for locating the problem.

  * src/debug/dbgbrwsr.prg
    ! fixed typo in previous commit.
      It should fix also problem with positioning in debugger source
      window reported by Alexey Myronenko.
    % minor simplification

  * contrib/hbmisc/udpds.prg
    ! updated to send correct broadcast messages in * nixes and
      respect broadcast addresses returned by system for IP interfaces

  * src/rdd/hbdbsort.c
  * src/rdd/hbsix/sxcompr.c
    * pacified warnings
2014-05-23 17:01:17 +02:00
Przemysław Czerpak
d00d7e70db 2014-05-20 19:49 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/debug/dbgbrwsr.prg
    ! update current row position after resizing
      It should fix 2-nd problem reported by Rolf.
2014-05-20 19:49:15 +02:00
Przemysław Czerpak
fde8db1e35 2014-05-20 17:03 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/debug/debugger.prg
    ! calculate ListBox coordinates as integer value
      (it fixes RTE reported by Rolf in SWITCH statement)

  * src/debug/dbghelp.prg
    ! fixed number of help pages calculation
2014-05-20 17:03:11 +02:00
Przemysław Czerpak
da82de17b1 2014-05-06 17:32 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rtl/cdpapi.c
  * src/rtl/iousr.c
  * src/rtl/hbjson.c
  * src/rtl/gtcrs/gtcrs.c
  * src/rtl/gtsln/gtsln.c
  * src/rtl/gttrm/gttrm.c
  * src/rtl/gtxwc/gtxwc.c
  * src/rdd/workarea.c
  * src/rdd/hbsix/sxcompr.c
  * contrib/hbct/token2.c
  * contrib/hbsqlit3/core.c
    * pacified some of -Wshadow warnings

  * include/hbapicdp.h
    ! typo in comment: bytes -> bits

  * src/vm/garbage.c
  * src/vm/thread.c
    * disabled some code with spinlocks when HB_HELGRIND_FRIENDLY macro
      is defined. It causes that final MT HVM code is slower using native
      platform mutexes but only such ones helgrind can recognize so the
      new macro can be useful for people who want to make some tests with
      helgrind. In such case they should rebuild Harbour with
         HB_USER_CFLAGS=HB_HELGRIND_FRIENDLY
      We use spinlocks and atomic integer operations also in few other
      places so it's possible that deeper tests can exploit them and
      we will have to cover them by HB_HELGRIND_FRIENDLY too just to
      easy detect real problems.
2014-05-06 17:32:45 +02:00
Przemysław Czerpak
7a211d052e 2014-04-11 17:36 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* contrib/gtqtc/gtqtc.h
  * contrib/gtqtc/gtqtc1.cpp
    * overload inputMethodEvent() in console object and insert
      commitString() data into GT keyboard input queue.
      It's necessary for Android working with SoftwareInputPanel
      and it fixes problem with eaten standard characters.
      QT documentation says that QInputMethodEvent are generated
      only when Qt::WA_InputMethodEnabled attribute is set but
      tests shows that it's not true and these events are generated
      instead of keyPress/keyRelease ones for simple text input.
      CTRL modifier, ESC, INS, HOME, END, PGUP, PGDN and Fn keys
      still does not work with GTQTC in Android builds.

  * src/rtl/tbrowse.prg
    ! fixed compilation with HB_BRW_STATICMOUSE
    ! do not cover dummy ivar with HB_COMPAT_C53 macro
    * minor simplification

  * src/vm/arrays.c
    * removed old commented code not used with current GC
2014-04-11 17:36:36 +02:00
Przemysław Czerpak
6277cb38ff 2014-04-02 12:46 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rtl/filebufd.c
  * src/rtl/iousr.c
    * slightly modified code to pacify warnings in some older GCC versions

  * contrib/gtwvg/gtwvg.hbx
    * regenerated with new function
2014-04-02 12:46:22 +02:00
Przemysław Czerpak
9aeaa964d6 2014-04-02 08:31 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/vm/hashes.c
    ! added missing HB_STACK_TLS_PRELOAD
2014-04-02 08:31:40 +02:00
Przemysław Czerpak
7349602fcb 2014-04-01 12:33 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rtl/filebuf.c
    ! unlock HVM stack before locking local mutex and calling hb_fs*()
      functions which also unlocks HVM. It fixes possible deadlock condition
      when hb_gcAll( .T. ) is executed.

  * include/hbapi.h
  * src/vm/garbage.c
    ! changed mark function semantic.
      Adding support for user defined mark function I created race condition
      in MT GC code. It happens because blocks marked as deleted were not
      scanned by GC mark code so their subitems where not accessible.
      To fix it we have to change mark function semantic. Now mark function
      can be executed also for blocks currently deleted. It means that GC
      block destructor should clean references to just removed items and
      subblocks. The best place to make it is clearing pointers to GC blocks
      just after hb_itemRelease() or hb_gcRefFree().
      It is save to clean the reference just before hb_itemRelease() or
      hb_gcRefFree() but only for the single block passed to these functions.
      It is not save to clear reference to more then one block and then
      execute above functions.
    + check reference count after destructor execution for all blocks
      not only arrays - warning it may exploit some wrong C code.
    - removed not longer used hb_gcRefCheck() function.

  * include/hbvm.h
  * src/vm/hvm.c
    + added new internal function hb_vmLockForce()
    ! fixed to mark GC blocks with active threads

  * src/vm/thread.c
  * include/hbthread.h
    % modified sync mutexes used by xBase++ signal class emulation
      to not use item array internally
    * updated mutex destructor to new GC mark semantic
    ! mark GT items if GT is bound with thread item
    ! fixed mutex notify/subscribe code to not change GC items
      when HVM stack is unlocked
    ! use hb_vmLockForce() to eliminate potential deadlock
    + added new C function hb_threadEnterCriticalSectionGC().
      It should be used instead of hb_threadEnterCriticalSection()
      in code which manipulates GC items inside critical section.
      It's slower but eliminates possible deadlock condition.
      Please remember that remember that both functions cannot
      be used for the same mutex. So if it's necessary to use
      hb_threadEnterCriticalSectionGC() in one place then it
      has to be used in all others when the same mutex is locked.

  * src/vm/arrays.c
  * src/vm/codebloc.c
  * src/vm/hashes.c
  * src/rtl/hbgtcore.c
  * contrib/hbcurl/core.c
  * contrib/hbexpat/core.c
    * updated destructors to new GC mark semantic

  * contrib/hbxpp/dllx.c
    ! fixed destructor for pointer item created by DllPrepareCall()
      Now it respects reference counter.
    ; added note about real behavior of library handle destructor,
      I haven't changed existing code behavior but maybe it should
      be done.

  * contrib/xhb/hbserv.c
  * src/debug/dbgentry.c
  * src/rdd/wacore.c
    ! fixed possible deadlocks by using hb_threadEnterCriticalSectionGC()
      instead of hb_threadEnterCriticalSection().

  * contrib/hbmemio/memio.c
    ! slightly modified hb_memfsDirectory() code to avoid race condition
      without using hb_threadEnterCriticalSectionGC()

  * src/vm/fm.c
    % reduce the lock range in HB_FM_STAT builds

  * src/rtl/hbsocket.c
    ! added missing HVM stack unlocking in hb_socketSelect() function

  * src/rtl/gtxwc/gtxwc.c
    ! added few missing locks for version compiled with HB_XWC_XLIB_NEEDLOCKS

  * src/rdd/dbtotal.prg
    * allow to use symbols instead of codeblocks
    * modified Harbour extension which uses ordKey() as default group
      signature to work also without index. In such case all records
      are summarized into single one.

  ; Most of above modifications were critical for stability of MT programs.
    They should allow to activate GC in any place.
2014-04-01 12:33:17 +02:00
Przemysław Czerpak
45a2a56a69 2014-03-27 15:03 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* contrib/rddads/ads1.c
    * do not call memset() with zero length

  * include/hbapi.h
  * src/vm/fm.c
    + added new FM statistic C function:
         const char * hb_xinfo( void * pMem, HB_USHORT * puiLine );

  * src/rtl/filebufd.c
  * src/rtl/iousr.c
    * modified casting to pacify more restrictive strict aliasing warnings

  * src/vm/garbage.c
    * minor formatting
2014-03-27 15:03:58 +01:00
Przemysław Czerpak
4c1c10ef29 2014-03-26 14:10 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/vm/garbage.c
    ! added protection for activating GC from thread with unlocked HVM stack
      when other thread is already executing GC passes. Such situation does
      not happen in core code and the protections is only just in case.

  * src/vm/hvm.c
    ! do not release HVM thread STOP signal when GC mark pass is activated.
      It was very serious bug which could cause memory corruption when
      thread unlocked HVM stack what allow to start GC mark pass by other
      thread and then locked HVM and begin to change complex variables
      still scanned by the GC thread. This problem have existed from the
      beginning when I committed initial version of Harbour MT support.
      I do not remember why I added code to remove the STOP signal - probably
      I was experimenting with some new things working on Harbour MT code
      and I forgot to deactivate it.
      NOTE: 3-rd party developers who use GC collectible pointer items
            must not activate any PRG code execution inside their mark
            functions.
2014-03-26 14:10:01 +01:00
Przemysław Czerpak
ed45b65b04 2014-03-24 22:19 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/Makefile
  + include/hbiousr.ch
  * src/rtl/Makefile
  + src/rtl/iousr.c
    + added module for writting Harbour FILE IO redirectors at PRG level

  + tests/iotcp.prg
    + example code for FILE IO redirector written in PRG.
      It's IOTCP and gives exactly the same functionality as TCP redirector
      in contrib which is written in C.

  * src/vm/runner.c
    % modified internal structure to eliminate some memory allocations

  * contrib/hbpgsql/rddcopy.c
    % small simplification
2014-03-24 22:19:45 +01:00
Przemysław Czerpak
046c9694e0 2014-03-20 14:59 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rtl/filesys.c
    ! added workaround for offset returned by FSeek( hDir, 0, FS_END )
      for directories handles in some *nixes
2014-03-20 14:59:02 +01:00
Przemysław Czerpak
5873d78e2c 2014-03-20 04:01 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/hbapifs.h
  * src/rtl/filebuf.c
  * src/rtl/filebufd.c
  * contrib/hbcomio/comio.c
  * contrib/hbmemio/memio.c
  * contrib/hbnetio/netiocli.c
  * contrib/hbtcpio/tcpio.c
    * changed internal FILE IO API. Now all functions which do
      not operate on PHB_FILE receive pointer to function table
      (PHB_FILE_FUNCS) used by given redirector.

  * src/rtl/vfile.c
    * open wirtual files in READWRITE mode by default
    * translate FO_* attributes to FXO_* ones

  * src/vm/classes.c
    ! fixed typo in RTE message

  * src/vm/garbage.c
    * use different error code (1301/1302) for destructor RTE

  * src/rtl/gtxwc/gtxwc.c
  * src/rtl/gtxwc/gtxwc.h
    + added support for HB_GTI_FONTWEIGHT with HB_GTI_FONTW_* actions

  * contrib/hbpgsql/rddcopy.c
    ! fixed memory leak
    % encapsulate PQ calls in hb_vmUnlock()/hb_vmLock() to not stop
      other threads when GC is activated
2014-03-20 04:01:25 +01:00
Przemysław Czerpak
21ec946359 2014-03-16 19:54 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/hbapifs.h
  * src/rtl/filebuf.c
    * move HB_FILE_TYPE_MAX definition to header file
    % include C stat() header only in *nix builds

  * src/pp/ppcore.c
    ! force stringify when illegal characters are included inside
      square brackets []
2014-03-16 19:54:22 +01:00
Przemysław Czerpak
07960b8b7d 2014-03-12 00:18 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rdd/hbdbsort.c
    * casting

  * src/rtl/filesys.c
    + added additional method to extract file time in MS-Windows version of
      hb_fsGetFileTime()

  * include/hbapifs.h
  * src/rtl/vfile.c
    + added C functions to manipulate PRG level hb_vf*() file pointer items

  * include/hbapifs.h
  * src/rtl/filebuf.c
    + added C functions to create/extract file IO handle from raw file handle
    + added C functions to check if file IO handle points to local file

  * contrib/hbmzip/mzip.c
    * changed hb_fs*() API to hb_file*() API
    ! fixed file time setting in *nix builds
2014-03-12 00:18:12 +01:00
Przemysław Czerpak
e227af16d0 2014-03-11 09:38 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/hbdbsort.h
  * include/hbrddcdx.h
  * include/hbrddnsx.h
  * include/hbrddntx.h
  * include/hbsxfunc.h
  * src/rdd/dbfcdx/dbfcdx1.c
  * src/rdd/dbffpt/dbffpt1.c
  * src/rdd/dbfnsx/dbfnsx1.c
  * src/rdd/dbfntx/dbfntx1.c
  * src/rdd/dbsql.c
  * src/rdd/hbdbsort.c
  * src/rdd/hbsix/sxcompr.c
  * src/rdd/hbsix/sxsem.c
    * changed hb_fs*() API to hb_file*() API
2014-03-11 09:38:36 +01:00
Przemysław Czerpak
74f298f8ec 2014-03-10 18:59 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* contrib/hbtcpio/tcpio.c
    * use default timeout defined in initial hostname string in read/write
      operations

  * include/hbapicom.h
  * src/rtl/hbcom.c
    + added new C function:
         int hb_comFindPort( const char * pszDevName, HB_BOOL fCreate );
      It check if given port name is already defined and if not and second
      parameter fCreate is TRUE then it allocates such port in one of last
      free slots. On success port number is returned. If port cannot be
      found or created 0 is returned.

  * include/harbour.hbx
  * src/rtl/hbcomhb.c
    + added new PRG function:
         hb_comFindPort( <cDeviceName> [, <lCreate> = .F. ] ) -> <nPort>

  * contrib/hbplist.txt
  + contrib/hbcomio/comio.c
  + contrib/hbcomio/hbcomio.hbc
  + contrib/hbcomio/hbcomio.hbp
    + added new Harbour FILE IO redirector.
      It recognizes and process names with "COM<n>:" prefix, in form like:
         COM<n>:[<com_params>]
      <n> is port number or port name prefixed with "$" character.
      <com_params> may contain serial port parameters like baud rate, stop
      and data bits, parity and flow control (XON,XOFF,CTS, RTS,DST,DTR).
      As delimiter comma "," is accepted.
      This redirector can be used in different subsystems using Harbour
      FILE IO and stream read/write operations, i.e.
         REQUEST HB_COMIO
         SET PRINTER TO COM2:38400,N81,XONXOFF
      can be used to connect to serial printers.
      Please remember that redirectors like NETIO can be used as wrapper
      to other redirectors so code like:
         pFile := hb_vfOpen( "NET:192.168.0.1:::COM1:9600,8N1" )
      opens 1-st serial port on the server and
         pFile := hb_vfOpen( "NET:192.168.0.1:::COM$/dev/ttyUSB0:9600,8N1" )
      opens "/dev/ttyUSB0" serial device on the server.
2014-03-10 18:59:52 +01:00
Przemysław Czerpak
4f4f59a64d 2014-03-08 14:00 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/compiler/hbcmplib.c
  * src/rtl/filesys.c
  * src/rtl/gtcrs/gtcrs.c
  * src/rtl/hbproces.c
  * src/rtl/memofile.c
  * src/vm/runner.c
  * contrib/xhb/txtline.c
    * pacified warnings

  * contrib/hbmemio/memio.c
    ! fixed C&P typo
2014-03-08 14:00:05 +01:00
Przemysław Czerpak
c89f63ee0b 2014-03-06 19:07 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/vm/set.c
    ! fixed freed memory access exploited by interactions between
      modifications in last few years.
    ! do not try to remove trailing ^Z char reading from the stream
      if FS_END seek reports 0.
    ! if possible open printer/alternate/extra output in write only mode
      to avoid problem on devices where read access is not available.

  * src/rtl/langapi.c
    * keep EN lang active after deinitialization

  * src/rtl/filesys.c
    ! fixed condition for file time refresh in *nix builds
    ! fixed file time setting in *nix builds

  * include/hbapifs.h
  * src/rtl/Makefile
  * src/rtl/filebuf.c
  + src/rtl/filebufd.c
    * renamed hb_fileRegister2() to hb_fileRegisterFull()
    + added new function hb_fileRegisterPart() which simplifies writing
      small FILE IO redirectors.

  * contrib/hbmemio/memio.c
  * contrib/hbnetio/netiocli.c
    * use hb_fileRegisterFull()

  * contrib/hbplist.txt
  + contrib/hbtcpio/hbtcpio.hbc
  + contrib/hbtcpio/hbtcpio.hbp
  + contrib/hbtcpio/hbtcpio.hbx
  + contrib/hbtcpio/tcpio.c
    + added new Harbour FILE IO redirector.
      It recognizes and process names with "tcp:" prefix, in form like:
         tcp:<host>:<port>[:<timeout>]
      It can be used in different subsystems using Harbour FILE IO and
      stream read/write operations, i.e.
         REQUEST HB_TCPIO
         SET PRINTER TO tcp:192.168.0.110:9100
      can be used to connect to network printers using TCP direct printing.

  * utils/hbmk2/po/hbmk2.pt_BR.po
    ! fixed typo in translation
2014-03-06 19:07:49 +01:00
Przemysław Czerpak
5f6c317492 2014-03-05 11:59 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/debug/dbgentry.c
    ! added additional protection against recursive debugger activation.
      It should fix problem reported by Rafa.

  * src/rtl/fssize.c
    * use explicit open attributes.

  * src/rtl/copyfile.c
    ! reset error object between different RTE calls in __copyFile()
    ! copy file attributes only on *nix platforms.
      In Cl*pper __copyFile() does not copy attributes so maybe also
      in *nixes we should make the same.

  * contrib/xhb/xhbcopyf.c
    * changed hb_fs*() API to hb_file*() API.
2014-03-05 11:59:16 +01:00
Przemysław Czerpak
b04066c388 2014-03-04 18:15 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/debug/debugger.prg
    * minor cleanup

  * src/rtl/copyfile.c
    ! fixed RTE after recent modification (#55)
2014-03-04 18:15:39 +01:00
Przemysław Czerpak
8e08bb8c2a 2014-03-04 04:30 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/compiler/gencc.c
    ! pacified CLANG warning in -gc3 output (issue: #53)
2014-03-04 04:30:29 +01:00
Przemysław Czerpak
624698cd5a 2014-03-04 04:03 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/vm/set.c
  * src/vm/memvars.c
  * src/rtl/copyfile.c
    ! casting and pacified warnings
2014-03-04 04:03:14 +01:00
Przemysław Czerpak
2c302ae7fa 2014-03-04 01:56 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/hbchksum.h
  * src/rtl/hbmd5.c
    * changed C function:
         void hb_md5file( HB_FHANDLE hFile, char * digest )
      to
         HB_BOOL hb_md5file( const char * pszFileName, char * digest )
      Warning: [INCOMPATIBLE]

  * src/rtl/copyfile.c
  * src/rtl/fscopy.c
  * src/rtl/hbmd5.c
  * src/rtl/isprint.c
  * src/rtl/memofile.c
    * changed hb_fs*() API to hb_file*() API

  * contrib/hbnetio/netiocli.c
    ! fixed GPF when non attributes are passed to hb_fileDirectory()
      redirected to NETIO - thanks to Rolf for the info about the problem.

  * contrib/hbnetio/netiosrv.c
    ! allow to pass empty directory to hb_fileDirectory() redirected to NETIO
2014-03-04 01:56:15 +01:00
Przemysław Czerpak
bb9d85f0fc 2014-03-04 00:08 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/vm/set.c
    ! added missing FXO_APPEND flag.
      It should fix #54.

  * src/vm/asort.c
    ! respect milliseconds part when timestamp values are compared in ASORT()
      Note: ASORT() does not use exact comparison so when mixed date and
      timestamp values are used only date is significant. Just like in:
         ASort( aValue, {|x, y| x < y } )

  * src/rtl/filebuf.c
    ! fixed C&P typo.
      It should fix problem with SET PRINTER TO reported by Rolf.

  * src/rtl/hbgtcore.c
    ! added missing break after HB_GTI_VERSION
2014-03-04 00:08:07 +01:00
Przemysław Czerpak
0e1377fd01 2014-02-26 23:56 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rtl/filebuf.c
    ! use hb_fsReadLarge()/hb_fsWriteLarge() instead of
      hb_fsRead()/hb_fsWrite() for hb_fileRead()/hb_fileWrite()
2014-02-26 23:56:05 +01:00
Przemysław Czerpak
6374c20735 2014-02-26 13:21 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* ChangeLog.txt
  * include/harbour.hbx
  * src/rtl/Makefile
  - src/rtl/xfile.c
  + src/rtl/vfile.c
    * renamed PRG functions HB_X*() to HB_VF*()
    * renamed PRG functions hb_vf[GS]etAttr() to hb_vfAttr[GS]et()
    * renamed PRG functions hb_vf[GS]etDateTime() to hb_vfTime[GS]et()

  * include/hbapifs.h
  * src/rtl/filebuf.c
  * src/rtl/fscopy.c
  * contrib/hbmemio/memio.c
  * contrib/hbnetio/netio.h
  * contrib/hbnetio/netiocli.c
  * contrib/hbnetio/netiosrv.c
    * renamed C functions hb_file[GS]etAttr() to hb_fileAttr[GS]et()
    * renamed C functions hb_file[GS]etFileTime() to hb_fileTime[GS]et()

  * contrib/hbnetio/netio.h
  * contrib/hbnetio/netiocli.c
  * contrib/hbnetio/netiosrv.c
    + added support for redirecting hb_vfConfig() to the server.
      NETIO does not use it anyhow NETIO works as full redirector
      to server system and it may be used on the server side.
2014-02-26 13:21:23 +01:00