* Using native assembly functions would be a lot faster,
but would require quite a bit of changes to glibc.
* This gets arm linking for now... I'd personally like
to see musl in here in the future for gcc4 images. (pre-R2)
The individual debug heap implementations are now exposed via a
structure of function pointers and a common frontend dispatches the
malloc and malloc_debug APIs through them.
The MALLOC_DEBUG environment variable can be used to select the guarded
heap by adding 'g', otherwise the debug heap is used as the default.
Consequently the separate libroot_guarded is not needed anymore and has
been removed.
To allow the use of environment variables this early, init_env_post_heap
has been added and the heap dependent atfork() moved there. This allowed
to fold the code of init_heap_post_env into init_heap so the former has
been removed.
* The API is saner: no need to build a string with var=value
* It is safer: putenv requires the string passed to it to stay
allocated, although most implementations (Haiku, Linux, BSD, OSX) do not
follow POSIX on this,
* Fix a problem reported in #12298 comments because the variable was set
with extra quotes (putenv does not escape them), leading to Qupzilla not
finding the home dir.
Consistently check for NULL the ServerBitmap pointer.
There seems to be cases where BView::DragMessage could pass an invalid
Bitmap token to app_server.
Maybe it's when a client only bitmap is passed, I don't know.
Anyway, this is defensive programming, and at least we check for NULL
consistently now.
This fixes#11681.
Note that SuperFreeCell still crashes, but at least app_server doesn't crash.
fts.c:
- Our fts functions were imported from FreeBSD and consequently did not
use the same weak alias methodology that most of our glibc-derived
POSIX functions do. These subsequently wound up clashing with the
implementation of said functions in current versions of coreutils,
resulting in assertion failures when e.g. running a program through
stdbuf, since the BSD-derived functions had different flag constraints
than their GNU peers. Consequently, this change adjusts the fts_*
family of functions to similarly be exported as weak symbols so they
can be preempted.
If the view fails to lock because it is actually gone, we obviously
can't use it to return the container, so delete it directly in that
case.
Fixes#12072 and probably #11982 which would then be a duplicate.
Most of the changes inspired from the "fr-latin9" map from Linux, but I
went with a different mapping because we also want some symbols later
introduced in Unicode, and also because we already had a different (and
I think better) mapping for some of the extra symbols in latin-9.
The keymap now features:
* Uppercase accented vowels, cedilla, spanish n with tilde
* Mathematical symbols for multiplication/division
* Spanish reverse exclamation and interrogation points, and interrobang
* Various other symbols from the latin-9 character set
- Rather than depending just on mount_server's launch, instead use
a condition that waits for the volumes mounted event. Had missed
the existence of this one previously.
- Adjust launch configuration such that media_server requires mount_server.
Otherwise, if the user has specified sound files for any events that are
on non-boot disks, these won't be found/loaded properly during the boot
process.
* Killing the thread leaks resources, and it will terminate cleanly and
safely when the destructor exits anyway.
* Fixes#12293. Thanks to ttcoder, jackburton and bonefish for investigating!
* Does not fix#12286. Going to bissect now...
UiUtils:
- Fix incorrect check to see if we had hit the bounds of the current memory
block that would cause us to overflow the block's data buffer if incorrect
length values were passed in.
* The code is just reversed to be better organized.
* Since the first event will be handled after a port write, at thread
spawn we just wait with infinite timeout for new messages.
* Remove goto which then become a continue.
* This permitted to remove the double waitUntil assignment which
was in different braces.
* lateness var become tempLateness, so it become more obvious than
before that it's a cached value and we are doing this to avoid
double calculus.
This reverts commit c2e9a9227e. I
misunderstood what Diver meant -- apparently whe he said "revert",
he meant the whole changeset, not this specific commit. So the culprit
is probably BTextView then.
This reverts commit fd3e3e7bfb.
Apparently this code wasn't duplicated, as it caused all sorts of
problems in applications (e.g. Debugger was blank).
Fixes#12269.
* The first problem was the O(n^2) complexity of the algorithm, it's
now linear and try to act in a circular way by dispatching
events and reading the port in a balanced way. This exclude
a certain degree of possible deadlocks.
* Add detection and escape when the system try to kill the
thread. This solve some blocking issues on exit et similia
that i had with libjackcompat.
* The algorithm choose soon which event to focus on.
* Lateness is calculated just before the event is dispatched
as it is the more appropriate place, otherwise we would be
calculating something imprecise/guessed.
* Remove timed_event_queue::queued_time. It's more precise to
just use the RealTime() before to Dispatch the event.
* It should solve the BSoundPlayer lateness problems.
* With those improvements the media_kit is not going to lock
completely under stress conditions, instead it try to work
in a best effort shape.
* There's still room for improvements, for example i'm considering some
strategies in lateness situations such as update scheduling latency,
try to decrease waiting time and detect when we are too early on
the other hand to recover when the load go down.
* Thanks to Julian Harnath for sharing his WIP patch which helped
with some controls such as avoiding negative lateness.
* Comments are welcome!
This reverts commit 5934b30b95.
* It got the way of an heisenbug and it seems this change
fixed the problems, but after 2 days the media_server returned
to block. Sorry about that! Will investigate further.