home *** CD-ROM | disk | FTP | other *** search
- Path: sparky!uunet!zaphod.mps.ohio-state.edu!sdd.hp.com!saimiri.primate.wisc.edu!ames!data.nas.nasa.gov!taligent!apple!jkc
- From: jkc@Apple.COM (John Kevin Calhoun)
- Newsgroups: comp.sys.mac.hypercard
- Subject: Re: HyperCard won't let me do libraries!?
- Message-ID: <74485@apple.apple.COM>
- Date: 19 Nov 92 17:54:44 GMT
- References: <1992Nov17.104028.12220@waikato.ac.nz> <jpugh-171192212941@kip2-56.apple.com>
- Organization: Apple Computer Inc., Cupertino, CA
- Lines: 66
-
-
- In article <jpugh-171192212941@kip2-56.apple.com> jpugh@apple.com
- (Jon Pugh) writes:
- >In article <1992Nov17.104028.12220@waikato.ac.nz>, ldo@waikato.ac.nz
- >(Lawrence D'Oliveiro, Waikato University) wrote:
- >>
- >> But I hit a snag--namely, a bug in HyperCard. The library stack correctly
- >> appears in the "StacksInUse" list, but when I try invoking an external from
- >> that library, HyperCard just beeps at me. I can make it come right if I try
- >> again a second time, but it always fails that first time.
-
- >I commend you on your persistence. I tried this quite some time ago and
- >just assumed it didn't work because of this problem. I wasn't as
- >persistent as you were. We'll have to see if Kevin "HyperDeity" Calhoun
- >has any wise words on the whys and wherefores of the issue.
-
- No deification please; we already have our pantheon of HyperGods, and I
- regularly slime them for having abused their privileges. As for me, I'd
- rather just have them give me the project back, thanks. :-)
-
- Thanks, Lawrence, for posting the materials that allowed me to reproduce
- this bug. Here's the nub of it (this information applies to HyperCard 2.0,
- 2.0v2, and 2.1):
-
- When you send a message to a stack other than the current stack, and the
- resource fork of the target stack has not been opened since HC was last
- launched, HyperTalk will open the resource fork, cache information about
- its externals, and then close the resource fork, thereby invalidating
- some of that information without realizing it. When the resource fork of
- the stack is next opened, HyperTalk won't refresh its cache, because it
- thinks it already has all of the relevant data. However, everything gets
- back in synch after the resource fork is closed a second time.
-
- This problem will also surface if you send a message to another stack, and
- the message is intercepted by a handler that invokes an external command.
-
- The workaround for versions 2.0, 2.0v2, and 2.1 is to visit the stack once
- before trying anything fancy, such as sending it the StartUsing message
- described in Lawrence's document. So, you can do this to make things work:
-
- lock screen
- lock messages
- go stack "Library"
- go back
- unlock screen
- unlock messages
- send StartUsing to stack Library
-
- It's actually slightly faster, however, to do it this way:
-
- lock screen
- lock messages
- push card
- go stack "Library"
- StartUsing
- pop card
- unlock screen
- unlock messages
-
- This does the trick for the stacks that were posted.
-
- BTW, if there's ever another version of HyperCard, this bug will be fixed
- therein, thanks to Lawrence, whose bug reports are always invaluable.
-
- Kevin Calhoun
- jkc@apple.com
-