mirror of
https://github.com/elliotnunn/supermario.git
synced 2024-11-25 09:30:50 +00:00
56 lines
2.9 KiB
Plaintext
56 lines
2.9 KiB
Plaintext
HFS Release Notes
|
||
First created on: 6/22/92 7:44:55 PM
|
||
|
||
----------------------------------------------------------•----------------------------------------------------------
|
||
|
||
6/22/92 7:45:06 PM
|
||
|
||
File: FileMgrPatches.a,58
|
||
Owner: Chris Derossi
|
||
Project: MainProj∫OS∫HFS∫
|
||
|
||
Radar bug: #100889,1032495
|
||
|
||
> Release notes for this change:
|
||
|
||
Retrospect Remote and QuicKeys both patch low-level Event Manager traps to get time. If
|
||
their trap patches happen to execute when the System (like the Process Manager) is
|
||
calling the Event Manager, then the Macintosh is in “System Mode” when they run. If their
|
||
patches execute at other times, the Mac is not in System Mode.
|
||
|
||
If their patches open files while the Mac is in System Mode, then the file they opened is
|
||
marked as “Opened by the System”. This is done so the system can know which files it
|
||
opened versus which files were opened by applications. (There are many reasons for this.
|
||
For example, when an application quits, the Process Manager closes all files that were
|
||
opened by that application and left open.)
|
||
|
||
There is a system patch to _Close which prevents files “Opened by the System” from being
|
||
closed by processes other than the system (like applications). In other words, our patch
|
||
to _Close prevents files that the system wants open from being closed by an application.
|
||
The only problem is that under System 7.0 and 7.0.1, our patch to _Close had a bug and
|
||
didn’t work. This meant that anyone could close a file that was opened by the system.
|
||
|
||
We fixed the patch to _Close so that applications could no longer close System-opened
|
||
files.
|
||
|
||
Both QuicKeys and Retrospect Remote rely on being able to open and close files. All of
|
||
their file operations happen during trap patches to the Event Manager. These patches are
|
||
executed in System Mode sometimes and not in System mode at other times depending on the
|
||
other things the Mac is doing. If a file is opened when the Mac is in System mode, and
|
||
closed when the Mac is not in System mode, then the close fails, leaving the file open.
|
||
This is why QuicKeys and Retrospect Remote are broken.
|
||
|
||
Since the patch to _Close has been broken since 7.0, and everyone is living with it that
|
||
way, I disabled it for Cube-E. Conceptually it’s a good idea to prevent non-System
|
||
processes from closing files opened by the System, but I don’t know of any dependencies
|
||
on that behavior. So the bottom line is that anyone can once again close files that were
|
||
opened by the System and QuicKeys and Retrospect Remote work again.
|
||
|
||
> What was tested:
|
||
|
||
I have a reproducable case of the QuicKeys failure that now works correctly. I didn’t do
|
||
any real testing of Retrospect because the bug is random, depending on exactly when the
|
||
trap patches fire. However, the frequent occurance of files being left open hasn’t
|
||
happened in several days. (It used to happen nightly).
|
||
----------------------------------------------------------•----------------------------------------------------------
|