diff --git a/lib/HTML/FormHandler/Field/Repeatable.pm b/lib/HTML/FormHandler/Field/Repeatable.pm
index 874dc1fc..e460b820 100644
--- a/lib/HTML/FormHandler/Field/Repeatable.pm
+++ b/lib/HTML/FormHandler/Field/Repeatable.pm
@@ -296,6 +296,8 @@ before 'value' => sub {
my @pk_elems =
map { $_->accessor } grep { $_->has_flag('is_primary_key') } $self->contains->all_fields
if $self->contains->has_flag('is_compound');
+
+ return [] unless $self->has_value;
my $value = $self->result->value;
my @new_value;
foreach my $element ( @{$value} ) {
diff --git a/lib/HTML/FormHandler/Field/Select.pm b/lib/HTML/FormHandler/Field/Select.pm
index 577ebb7e..4b8adda9 100644
--- a/lib/HTML/FormHandler/Field/Select.pm
+++ b/lib/HTML/FormHandler/Field/Select.pm
@@ -461,6 +461,7 @@ sub sort_options { shift; return shift; }
before 'value' => sub {
my $self = shift;
+ return undef unless $self->has_result;
my $value = $self->result->value;
if( $self->multiple ) {
diff --git a/t/circular_refs.t b/t/circular_refs.t
index 014cad03..0181bd1c 100644
--- a/t/circular_refs.t
+++ b/t/circular_refs.t
@@ -24,6 +24,12 @@ use Test::Memory::Cycle;
type => 'Text',
required => 1,
);
+ has_field 'some_select' => ( type => 'Select', inactive => 1 );
+
+ sub update_model {
+ my $self = shift;
+ my $value = $self->field('some_select')->value;
+ }
}
my $form = new_ok( 'My::RepeatableForm' );