5454 HC corruption

kee nethery kee at kagi.com
Mon Dec 15 19:28:16 EST 2003


On Dec 11, 2003, at 9:44 AM, SimPLsol at aol.com wrote:

> Sarah wrote:
>
> I am still running numerous HyperCard based systems and I do get
> corruption, of two sorts. One is the 5454 error, so I would be very
> interested to hear your method for avoiding this. The other is when a
> single card seems to disappear and any reference to it just produces a
> "No such card." error. Do you have a recipe for avoiding this type as
> well?

I do the following several times a day. Go to every card in the stack, 
do a compact stack, then trigger an AppleScript to copy the compacted 
stack to another folder so if anything gets hosed, I'm out 2 hours of 
changed data at most.

You could do something like:

on opencard
global thenexttime
if the seconds > thenexttime then
     put the id of this card into startcard
     go next card
     repeat until the id of this card = startcard
         go next card
     end repeat
     domenu "compact stack"
     put the seconds + (60 * 60 * 2) into thenexttime
     push card
     go to card "do backup"
     send doit to cd btn "do the backup"
     pop card
end if
pass opencard
end if

The other thing to note is that you can open a dead 5454 stack with a 
text editor (I use TexEdit) and if you know it contains changes that 
you want to capture, chances are good you'll be able to search for the 
data and copy it out as text.


>

cool info:

> What they were doing was a job costing on a 3,000 item/card inventory 
> stack.
> We stepped through the script and the stack corrupted predictably on 
> card 357.
> The code said:
> repeat with i = 1 to the number of lines of fld x
>      do something
> end repeat
> Card 357 was unique in that fld x was empty. So we tested repeats and 
> empty
> fields. Sure enough, a repeat loop on a null set corrupts the stack 
> with a 5454
> error.
> Then we went through every line of code in our system looking for 
> repeat
> loops on both fields and variables. We added a little test:
> if fld x is not empty
> then
>      repeat with i = 1 to the number of lines of fld x
>           do something
>      end repeat
> end if
> We added this code throughout the system about three years ago. Since 
> then we
> have only had one 5454 reported on the new code. Users who have 
> continued
> working with the old code still get 5455 errors at the same rate 
> (another reason
> for them to upgrade).



More information about the use-livecode mailing list