diff options
| author | Drahflow <drahflow@gmx.de> | 2013-01-07 15:39:52 +0100 |
|---|---|---|
| committer | Drahflow <drahflow@gmx.de> | 2013-01-07 15:39:52 +0100 |
| commit | 1341f245ac3dbbd1a9499b234da418ecce148fd2 (patch) | |
| tree | 9f6427e6284f32bd557d04bbc060f1dc6c902295 | |
| parent | abf250d1efb699ca0bfedc62c5ba1278c08fc32d (diff) | |
" parent" is _not_ a key of a struct
| -rw-r--r-- | interpreter/ElymasGlobal.pm | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/interpreter/ElymasGlobal.pm b/interpreter/ElymasGlobal.pm index 34d86e3..3eb4698 100644 --- a/interpreter/ElymasGlobal.pm +++ b/interpreter/ElymasGlobal.pm @@ -205,6 +205,7 @@ our $global = { die "not a struct during member dereference in " . Dumper($struct) unless ref($struct->[1]) eq 'ARRAY' and $struct->[1]->[0] eq 'struct'; die Dumper($struct, $member) . "Cannot resolve requested member $member" unless exists $struct->[0]->{$member}; + die "Resolved member $member was incorrectly stored as something non-arrayish" unless ref($struct->[0]->{$member}) eq 'ARRAY'; push @$data, $struct->[0]->{$member}; execute($data, $scope) if($data->[-1]->[2] eq 'active'); @@ -399,7 +400,7 @@ our $global = { my $s = pop @$data or die "Stack underflow"; if(ref($s->[1]) eq 'ARRAY' and $s->[1]->[0] eq 'struct') { - my @keys = keys %{$s->[0]}; + my @keys = grep { /^[^ ]/ } keys %{$s->[0]}; push @$data, [[map { [$_, 'string'] } @keys], ['array', '[]', [['range', 0, $#keys]], ['string']]]; } else { |
