[interchange] Fix problem with lookup_exclude discovered by Andrew Baerg, which

Mike Heins interchange-cvs at icdevgroup.org
Fri Mar 4 14:55:02 UTC 2011


commit b20a7189552e0c6697b4ac3bcb52c2fc156fa92f
Author: Mike Heins <mike at bill.(none)>
Date:   Fri Mar 4 09:51:42 2011 -0500

    Fix problem with lookup_exclude discovered by Andrew Baerg, which
    will cause display() to return prematurely.

 lib/Vend/Form.pm |   16 +++++-----------
 1 files changed, 5 insertions(+), 11 deletions(-)
---
diff --git a/lib/Vend/Form.pm b/lib/Vend/Form.pm
index a08fd91..ef9bde6 100644
--- a/lib/Vend/Form.pm
+++ b/lib/Vend/Form.pm
@@ -1272,24 +1272,18 @@ if($opt->{debug}) {
 			$ary = [['', errmsg('--no current values--')]];
 		}
 		if($opt->{lookup_exclude}) {
-			my $sub;
+			my $re;
 			eval {
-				$sub = sub { $_[0] !~ m{$opt->{lookup_exclude}} };
+				$re = qr/$opt->{lookup_exclude}/;
 			};
 			if ($@) {
 				logError(
 					"Bad lookup pattern m{%s}: %s", $opt->{lookup_exclude}, $@,
 				);
-				undef $sub;
-			}
-			if($sub) {
-				@$data = grep $_,
-							map {
-								$sub->(join '=', @$_)
-									or return undef;
-								return $_;
-							} @$data;
+				undef $re;
 			}
+
+			$re and @$data = grep "$_->[0]=$_->[1]" !~ /$re/, @$data;
 		}
 
 		unless($opt->{lookup_merge}) {



More information about the interchange-cvs mailing list