diff options
Diffstat (limited to 'perl/Wallet')
-rw-r--r-- | perl/Wallet/Object/Base.pm | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/perl/Wallet/Object/Base.pm b/perl/Wallet/Object/Base.pm index fff06f4..b4e5939 100644 --- a/perl/Wallet/Object/Base.pm +++ b/perl/Wallet/Object/Base.pm @@ -378,9 +378,11 @@ sub flag_clear { } # List the flags on an object. Returns a list of flag names, which may be -# empty. On error, returns (undef) (a list containing one undefined element). +# empty. On error, returns the empty list. The caller should call error() in +# this case to determine if an error occurred. sub flag_list { my ($self) = @_; + undef $self->{error}; my @flags; eval { my $sql = 'select fl_flag from flags where fl_type = ? and @@ -395,7 +397,7 @@ sub flag_list { if ($@) { my $id = $self->{type} . ':' . $self->{name}; $self->error ("cannot retrieve flags for $id: $@"); - return (undef); + return; } else { return @flags; } @@ -494,7 +496,7 @@ sub show { for (my $i = 0; $i < @data; $i++) { if ($attrs[$i][0] eq 'ob_created_by') { my @flags = $self->flag_list; - if (@flags == 1 and not defined $flags[0]) { + if (not @flags and $self->error) { return undef; } if (@flags) { @@ -705,7 +707,9 @@ user and host from which the change is made and the time of the change. =item flag_list() List the flags set on an object. If no flags are set, returns the empty -list. On failure, returns the list consisting of one undefined element. +list. On failure, returns an empty list. To distinguish between the empty +response and an error, the caller should call error() after an empty return. +It is guaranteed to return undef if there was no error. =item flag_set(FLAG, PRINCIPAL, HOSTNAME [, DATETIME]) |