[rt-users] A further update on the RedHat 9 Storable issue ([fwd] Re: Storable Error (from: ams at wiw.org))

Jesse Vincent jesse at bestpractical.com
Sat Aug 9 15:49:50 EDT 2003


Abhijit has been digging further into the Storable issue folks were
experiencing on RedHat 9. He's tracked it to a bug in perl itself, which
will be fixed in perl 5.8.1. Additionally, a new version of Storable
will soon be available which works around this issue. Collectively, I
suspect we all owe Abhijit quite a few beers.

	Best,
	Jesse

----- Forwarded message from Abhijit Menon-Sen <ams at wiw.org> -----

From: Abhijit Menon-Sen <ams at wiw.org>
To: Nicholas Clark <nick at ccl4.org>
Cc: perl5-porters at perl.org, jesse at fsck.com, jhi at iki.fi,
	vbono at vinny.org
Subject: Re: Storable Error
X-Spam-Status: No, hits=-5.9 required=7.0
	tests=AWL,BAYES_10,EMAIL_ATTRIBUTION,IN_REP_TO,QUOTED_EMAIL_TEXT,
	      REFERENCES,REPLY_WITH_QUOTES
	autolearn=ham version=2.55
X-Spam-Level: 
X-Spam-Checker-Version: SpamAssassin 2.55 (1.174.2.19-2003-05-19-exp)

At 2003-08-09 00:35:36 +0100, nick at ccl4.org wrote:
>
> I find that I can create hashes where key flags are set but HASKFLAGS
> is not with the appended patch, and running t/op/utfhash.t with -DA

Nicholas, thank you ever so much. With your patch as a starting point, I
found: chop ($a = "\x{df}".chr 256); $a{$a} = $a{"\x{df}"} = 1; %a = ();

The problem was much easier to track down thereafter. The appended patch
seems to fix it and break nothing else. I've applied it as #20587, but I
would appreciate it if you could cast an eye over it. (Can you think of
any cases I've missed?)

Jesse, this should fix the "Storable problem" people have reported under
RH9. It seems there are some things that Red Hat's Perl can't be blamed
for, after all. :-)

Jarkko, please absorb this into 5.8.1 after Nicholas writes a test^W^W^W
comments on it.

-- ams

--- hv.c~	Sat Aug  9 23:43:53 2003
+++ hv.c	Sun Aug 10 00:25:09 2003
@@ -308,6 +308,8 @@ S_hv_fetch_flags(pTHX_ HV *hv, const cha
             }
             else
                 HeKFLAGS(entry) = flags;
+            if (flags)
+                HvHASKFLAGS_on(hv);
         }
         if (flags & HVhek_FREEKEY)
             Safefree(key);
@@ -478,6 +480,8 @@ Perl_hv_fetch_ent(pTHX_ HV *hv, SV *keys
             }
             else
                 HeKFLAGS(entry) = flags;
+            if (flags)
+                HvHASKFLAGS_on(hv);
         }
        if (key != keysave)
            Safefree(key);


----- End forwarded message -----

-- 
http://www.bestpractical.com/rt  -- Trouble Ticketing. Free.



More information about the rt-users mailing list