The action vm_page_fault takes should depend on whether the iframe to be
handled is a user iframe or not. The check for the user flag in the
error code does however only check if the fault happend in user or
kernel space. Use IFRAME_IS_USER() instead which checks the privilege
level of the iframe. Under 32 bit x86 this also handles vm86
compatibility mode properly.
This is the same logic as used on FreeBSD (TRAPF_USERMODE).
Fixes #13930.
Change-Id: I9c348b6ab4c60daaaaa2c0fe33bcc3336aa29f7b
Reviewed-on: https://review.haiku-os.org/560
Reviewed-by: Axel Dörfler <axeld@pinc-software.de>
(cherry picked from commit 8c005190c455f3722c64a6ffc7dece9020da7258)
Reviewed-on: https://review.haiku-os.org/563
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
Thanks Axel and Jerome for the reviews!
Change-Id: I4f116c540cf59ba74b79d9d2f95ed40edc9c4174
Reviewed-on: https://review.haiku-os.org/557
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
(cherry picked from commit 67f692f306f383db512ac0b077fffcc9798499d9)
Reviewed-on: https://review.haiku-os.org/558
Previously, if a device driver returned an error of any kind, -1 was
propagated the rest of the way up through the stack instead of the
actual error code.
Change-Id: I6839763c6b2eb86d6112d3732e6cb80d022f1fe8
Reviewed-on: https://review.haiku-os.org/550
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
(cherry picked from commit e9073260a7054be876ec67bfefbfdaba05ea3142)
Reviewed-on: https://review.haiku-os.org/554
This depends on the previous commit to return the correct error code
from ioctl().
If there are no VAPs running (which is the case after a forced disconnect
from an access point), scans will fail. In that case, we call
IEEE80211_IOC_HAIKU_COMPAT_WLAN_UP, which will restart a VAP, and then
initiate the scan.
Change-Id: I732aefe67e386dbb0ed3d232ed9deda678132601
Reviewed-on: https://review.haiku-os.org/551
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
(cherry picked from commit 4e5aaaa700f4f6911514e7f469ba14201a66581c)
Reviewed-on: https://review.haiku-os.org/555
Fixes #12034, and a variety of other strange "no wireless networks
appear" bugs that have plagued Haiku for years.
Change-Id: I734cb8084e8a626b8e03511519609bf80c1559eb
Reviewed-on: https://review.haiku-os.org/552
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
(cherry picked from commit 45bc01d2f71686b254d97ce04701c413d31cc76b)
Reviewed-on: https://review.haiku-os.org/556
* _VirtualWidth() ignores invisible columns
This makes the horizontal scrollbar match the width of the visible columns.
Also trigger an initial update of the scrollbars.
* Fixes #14480
Change-Id: I7d4b27a8fdca58c150ac47f9b948b127fb275fdf
Reviewed-on: https://review.haiku-os.org/543
Reviewed-by: Stephan Aßmus <superstippi@gmx.de>
(cherry picked from commit aa39f874dcadea54c634aa226f7ce7b817812ecd)
Reviewed-on: https://review.haiku-os.org/548
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
This fixes the (intermittently) crashing test added in the previous commit,
and should also fix #12024 and #14348.
Note that this is a slight behavioral departure from BeOS, though since
BeOS crashed when this was done previously, it shouldn't cause any
other problems.
Change-Id: I7ac271258afaf1bcf649e0e44ab31184b6dc92f1
Reviewed-on: https://review.haiku-os.org/542
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
...if the row is present in the list, but continue to return false if the
row is not currently visible on the screen.
Part of #11675. Cherry-picked from https://review.haiku-os.org/442.
Here's what happens:
* BPackageManager created a BRefreshRepositoryRequest with a BContext
of an empty DecisionProvider and itself.
* Since there is no internet access, the FetchFileJobs that the refresh
class queued fail. Specifically, the first one does, but then as the
subsequent ones depend on it, they are all aborted.
* As some jobs were aborted, the StateListener is notified.
* The state listener of course has the BPackageManager class as one of
the listeners, and so calls it, because even though the handler methods
of BRefreshRepositoryRequest, they are powerless to stop event propagation.
* The BPackageManager's highest subclass' implementation gets called, which is
of course pkgman's.
* pkgman decides to DIE() upon receiving word that a job was aborted.
There are thus four potential solutions to this issue:
* Rewrite the package kit's event & job handling systems to not be so
screwed up in terms of propagation. Seriously, there is way too much
stuff that we send to the "user" in here, and as you can see, it can
get *extremely* convoluted even for supposedly "simple" tasks. This
is probably the best "long-term" solution; but obviously is far too
involved for the present.
* Only partially rework event handling; specifically in the SupportKit to
allow JobStateListeners to stop further propagation. This is probably
the best "medium-term" solution.
* Do not pass the package manager as the JobStateListener to the
RefreshRepositoryRequest. This would have the downside that the
regular notifications about download state, etc. would not be returned
at all, which we don't want. We could make a shim ... but that would be
a lot of code for little benefit. The prior solution makes more sense.
* Completely ignore "JobAborted" notices in pkgman. In fact, this is the
solution that virtually all other consumers of this API take (although
some of them seem to have TODOs about it), including package_daemon,
HaikuDepot, etc., and so it's the one I've taken here. If a "job aborted"
error is actually fatal, then it's the Package Kit's problem.
Fixes #13075.
* Make the status message view have a minimum height of the logo
view's height.
* Properly add the views to the BGroupView layout.
* Instead of trying to set the explicit minimum size from the status
view information, just invalidate the GroupLayout. This seems to fix
a number of bugs relating to text overflowing the view, while it doesn't
fix others (e.g. orphan words on their own lines are still not drawn
in some cases, which appears to be a BTextView bug.)
* Use BString::SetToFormat instead of snprintf in some places.
As far as I can make out, fixes #13608.
These are really only defined during the build of Haiku itself,
so we don't want them in a system header. Since none of these
functions are virtual, leaving them as declared but not defined
should be fine.
All other functions in this file that locate the TTeamGroup via FindTeam()
do a NULL check afterwards, so the fact that this one did not just looks
like an oversight.
Fixes #14457.
Change-Id: I669c73a990b0fff84cf5d37b5a4cc57ad97905ff
Reviewed-on: https://review.haiku-os.org/514
Reviewed-by: Alexander von Gluck IV <kallisti5@unixzen.com>
A URL in string form should be able to be parsed and then verbatim
regenerated according to 'UrlTest'. This change fixes this ability
for the case where there is a '?' initiating a query or a '//'
initiating a host/authority section.
Partly Fixes #14377
Change-Id: I6547253c3cdc22d79514edf75284e9725d1a2d17
Reviewed-on: https://review.haiku-os.org/512
Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>
The kernel's handling of SIGABRT is just to terminate the application
immediately without doing anything else (it only notifies the debugger if
there's one installed for this application already.) More serious faults
(e.g. SIGSEGV) originate in the kernel and handle this logic before they
even invoke the signal handler.
So the correct solution is to do the same here in libroot. This incurs
a very, very slight performance penalty of the syscall time for sigaction(),
though I expect whatever applications are causing SIGABRT to be invoked more
than once a second will call raise() directly instead of abort()...
This allows applications to theoretically open() the poke device but
then change their uid/euid to something more restrictive. The mem
device is not even this permissive; but I can think of some scenarios
in which this might be useful.
BFS does this as part of journal management, but not as part of block
cache synchronization (which makes sense, as flushing it then would
defeat the purpose of the drive's write cache.) No other file system
seems to touch it at all, so we should do it as part of an explicit sync.
This may help with some of the filesystem corruption issues, as it seems
that on slow disks, the drive might not have enough time to flush the cache
before it is powered off (or on some SATA/AHCI based disks, it is not flushed
before close at all), so triggering it here and, as the ioctl is supposed to be
synchronous, waiting for it also, seems to make sense.
Change-Id: I7d9992c21ca4b59c839711dcc96c973b4b8df052
Reviewed-on: https://review.haiku-os.org/530
Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
(cherry picked from commit 864b868b262e56dabe45bbb3881564a4ff162582)
Reviewed-on: https://review.haiku-os.org/539
* The difference is visible when control background doesn't match
panel background.
Change-Id: Ie3a034acaa52929becd6601520e0e05f32ecc8d8
Reviewed-on: https://review.haiku-os.org/537
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
(cherry picked from commit f5ac1f07e20890e92adf8f7cee03413afbc9a4db)
Reviewed-on: https://review.haiku-os.org/538
When URLs combine a base URL with a relative part, the relative part's
path component was being pre-processed. This removed any ".." from the
path and in some cases in the unit test cases, the ".." should have been
retained and then only later applied to the base URL. This changes
fixes this so that the relative part is not pre-processed and is applied
with it's path in a raw state.
Completes Fixes for #14377
Change-Id: I9cebb8599889494e11f40a3b54c87ebca3ed1a21
Reviewed-on: https://review.haiku-os.org/529
Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>
(cherry picked from commit 1a5994981b4f568f04fef429ac962f78f10bfce2)
Reviewed-on: https://review.haiku-os.org/536
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
Resetting the drawing mode to B_OP_COPY was not right, since the previous mode could be anything.
Use WritePush/PopState() instead.
Change-Id: If9cba2c46bf372fd0164d951fcc49696cf72d576
Reviewed-on: https://review.haiku-os.org/534
Reviewed-by: Stefano Ceccherini <stefano.ceccherini@gmail.com>
Does not seem to work, though.
Change-Id: I309d8de79a71ab8e08f4ac2f2566080b67b84800
Reviewed-on: https://review.haiku-os.org/533
Reviewed-by: Stefano Ceccherini <stefano.ceccherini@gmail.com>
Like the AS_DRAW_PICTURE case, make a copy of the passed BPicture also for AS_CLIP_TO_PICTURE
Change-Id: Id9a0adc48d73e5ec9c0d37e2ed85e30aa48369ab
Reviewed-on: https://review.haiku-os.org/532
Reviewed-by: Stefano Ceccherini <stefano.ceccherini@gmail.com>
In the AS_CLIP_TO_PICTURE case, the "picture" variable was shadowing the outer "picture" variable.
Change-Id: I3b9de2432f93a683aaccdb899051a14ebf9b7e6e
Reviewed-on: https://review.haiku-os.org/531
Reviewed-by: Stefano Ceccherini <stefano.ceccherini@gmail.com>
Change-Id: I52ada3447b638db07622fa51746e75ce6cce7a46
Reviewed-on: https://review.haiku-os.org/518
Reviewed-by: Alexander von Gluck IV <kallisti5@unixzen.com>
Reviewed-on: https://review.haiku-os.org/522
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
This change matches hrev52316 in master. These URL's will be around
for a long time since haikudepot references them for repository
matching.
Change-Id: Ifbfbc8a69ab45f76ee0a10e05903b0b05c161d9b
Reviewed-on: https://review.haiku-os.org/519
Reviewed-by: Alexander von Gluck IV <kallisti5@unixzen.com>
* De-escalate the severety of data loss from "high risk" to "risk".
* Remove the advice to not create partitions with DriveSetup. It's been tested
and been working well since the last alpha. Do recommend making backups of
all partitions.
* Remove description how to add Haiku to Grub. It's too much detail and the
user would have to memorize the info. Add a link to our Booting guide
instead.
* Mention BootManager as an alternative to boot Haiku, refering to the
Userguide for more info.
* Alpha -> Beta
* Only give normal thanks instead of "a lot" and don't beg to like us.
Sounded a bit desperate...
Change-Id: I212513fde01287f5d1c9c5c9891827aaf0b7e1ea
Reviewed-on: https://review.haiku-os.org/502
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
When recording a BPicture, the app_server just record events and does
not draw anything. As a result, drawing code that relies on the view
state can get out of sync.
Specifically, our text drawing code relies on getting the pen position
from app_server when asked to draw at "current pen position". As a
result, the pen is never moved and when drawing multiple chunks of text,
they end up overlapping, all drawn at the same cursor position.
To avoid the problem and show that this is indeed what is happening,
this patch adds an explicit cursor move into the BPicture after drawing
a string. This also updates app_server internal pen position, so further
drawing happens at the expected place.
This is however not the right way to fix this. Either we should remove
the code that gets the pen position back from app_server, and let
app_server completely manage the cursor position, or, we should make
sure recording a BPicture also updates the pen position so the
application can rely on accessing it and getting up to date data.
Fixes #6761.
NOTE(waddlesplash): It seems to make sense to include this hack
in R1/beta1, so that printing is not totally broken. Obviously
it should stay out of master.
Change-Id: Ib8e031355032228ef29aceee5f1e1ca21565b831
Reviewed-on: https://review.haiku-os.org/498
Reviewed-by: waddlesplash <waddlesplash@gmail.com>