Jan Vrany <jan.vrany@fit.cvut.cz> [Wed, 26 Jul 2017 22:32:47 +0100] rev 22133
Oops, fixed class names in `stx:libbasic` project definition.
Renamed `UnixTerminalAttributes` and `UnixTerminalConstants` has been renamed
to `TTYAttributes` and `TTYConstants` during the development but classes
were not renamed in `classNamesAndAttributes` list.
Stefan Vogel <sv@exept.de> [Mon, 31 Jul 2017 16:38:39 +0200] rev 22132
#BUGFIX by stefan
class: OrderedSet
added: #withIndexDo:
Stefan Vogel <sv@exept.de> [Mon, 31 Jul 2017 15:43:13 +0200] rev 22131
#BUGFIX by stefan
class: Win32OperatingSystem class
added:
#nameOfSTXExecutable
#primNameOfSTXExecutable
changed: #getBinaryType:
-- fix for Unicode16String arg
https://expeccoalm.exept.de/D207228
pathOfStxExecutable didn't work, if stx was executed and not stx.exe or stx.com
Stefan Vogel <sv@exept.de> [Mon, 31 Jul 2017 15:40:09 +0200] rev 22130
#BUGFIX by stefan
class: ObjectMemory class
changed: #directoryForImageAndChangeFile (send #pathOfSTXExecutable instead of #nameOfSTXExecutable)
Jan Vrany <jan.vrany@fit.cvut.cz> [Mon, 31 Jul 2017 10:08:28 +0100] rev 22129
Fixed a baaad bug in `WeakIdentityDictionary` w.r.t growing
that may lead into value loss without noticing. This is bad expecialy
for finalization registry where resources may be lost without being
finalized.
Imagine a following situation:
1. An instance of `WeakIdetityDictionary` (worse: `Registry`) is almost
full.
2. Someone wants to add a new element to it, there's no space so `#at:put:`
is about to call `#grow:`
3. GC kicks in and collecs more than one element.
4. `WeakIdentityDictionary >> grow:` is called to make space for new element.
The problem is after step 3. the contents of the dictionary is
(temporarily) invalid - there are two entries (at random positions)
whose key is 1 (the corpse). Inherited `Dictionary >> grow:`
would treat the corpse as regular key and map them to the same
position in the hashtable - last wins, the previous values are simply
lost without noticing. Even worse, in case of `Registry` instance,
values (executors) are lost without without being sent #finalize so
resource leaks.
In an extream yet reproducible case this may lead into a loong
uninterruptable lags if the dictionary is huge (500k entries) and most
of is are corpses not yet taken away - the complexity of `#grow:`
then degrades to O(n^2)!
To fix this, we need to care for corpses while growing the dictionary
and register their death.
Claus Gittinger <cg@exept.de> [Fri, 28 Jul 2017 20:44:57 +0200] rev 22128
#BUGFIX by cg
class: Behavior
changed: #readFrom:onError:
do not evaluate the exceptionBlock twice in case of an
error (did so, if exception block returned sth. which was not kind of self.
Stefan Vogel <sv@exept.de> [Thu, 27 Jul 2017 16:38:58 +0200] rev 22127
#BUGFIX by stefan
class: Filename
added: #isValidFilename
comment/format in: #isSymbolicLink
changed: #makeLegalFilename
consider all bad characters
class: Filename class
comment/format in: #isBadCharacter:
Stefan Vogel <sv@exept.de> [Thu, 27 Jul 2017 16:25:49 +0200] rev 22126
#REFACTORING by stefan
class: CharacterArray
changed: #isAlphaNumeric
Stefan Vogel <sv@exept.de> [Thu, 27 Jul 2017 16:25:01 +0200] rev 22125
#BUGFIX by stefan
class: PCFilename
changed: #makeLegalFilename
consider all bad characters
class: PCFilename class
changed: #isBadCharacter:
mawalch [Thu, 27 Jul 2017 09:35:51 +0200] rev 22124
#BUGFIX
second try for previous commit