http://qs1969.pair.com?node_id=576555


in reply to Re^3: Win32 - Memory can not be "read"
in thread Win32 - Memory can not be "read"

Wow...it's amazing what we learn on Perlmonks! :)

Thanks, I took your advice, and did some digging. Will you be too surprised to learn I found a for() loop on line 32 of a module?

It's not our module though...it's Exception::Class. Here's the beginning of the code in that module (ending at the for() statement on line 32):

package Exception::Class; use 5.005; use strict; use vars qw($VERSION $BASE_EXC_CLASS %CLASSES); BEGIN { $BASE_EXC_CLASS ||= 'Exception::Class::Base'; } $VERSION = '1.19'; sub import { my $class = shift; local $Exception::Class::Caller = caller(); my %c; my %needs_parent; while (my $subclass = shift) { my $def = ref $_[0] ? shift : {}; $def->{isa} = $def->{isa} ? ( ref $def->{isa} ? $def->{isa} : [$def +->{isa}] ) : []; $c{$subclass} = $def; } # We need to sort by length because if we check for keys in the # Foo::Bar:: stash, this creates a "Bar::" key in the Foo:: stash! MAKE_CLASSES: foreach my $subclass ( sort { length $a <=> length $b } keys %c ) {
The only place we do a 'use Exception::Class', it is accompanied by a long list of our own classes of Exception we define.

again, I'm not sure what this means, but it feels like a red herring, since this code works 99.99% of the time and is exercised tens of thousands of times per day.

I see op.c got a mountain of work between 5.8.5 and 5.8.8, so now I'm hoping to get approval for testring 5.8.8 to see if the issue clears up. It's still odd that this suddenly became an issue, but perhaps some change in Windows (security patch?) aggravated a known issue in op.c?

Thanks again!