aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDrahflow <drahflow@gmx.de>2013-01-07 15:39:52 +0100
committerDrahflow <drahflow@gmx.de>2013-01-07 15:39:52 +0100
commit1341f245ac3dbbd1a9499b234da418ecce148fd2 (patch)
tree9f6427e6284f32bd557d04bbc060f1dc6c902295
parentabf250d1efb699ca0bfedc62c5ba1278c08fc32d (diff)
" parent" is _not_ a key of a struct
-rw-r--r--interpreter/ElymasGlobal.pm3
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 {