[interchange-cvs] interchange - jon modified lib/Vend/Order.pm

interchange-core@interchange.redhat.com interchange-core@interchange.redhat.com
Thu May 16 11:07:00 2002


User:      jon
Date:      2002-05-16 15:06:25 GMT
Modified:  lib/Vend Tag: STABLE_4_8-branch Order.pm
Log:
Fix bug that kept &calc, &return, etc. from ever failing (because no
variable name was associated with them). This appears to have been
broken since the Minivend days, so that there was no difference between
these two:

&calc=$Scratch->{blahblah} = "something"; return 1;

and

&calc=$Scratch->{blahblah} = "something"; return 0;

This fix is already in Interchange 4.9.

Revision  Changes    Path
No                   revision



No                   revision



2.6.2.7   +31 -31    interchange/lib/Vend/Order.pm


rev 2.6.2.7, prev_rev 2.6.2.6
Index: Order.pm
===================================================================
RCS file: /var/cvs/interchange/lib/Vend/Order.pm,v
retrieving revision 2.6.2.6
retrieving revision 2.6.2.7
diff -u -u -r2.6.2.6 -r2.6.2.7
--- Order.pm	27 Mar 2002 16:50:03 -0000	2.6.2.6
+++ Order.pm	16 May 2002 15:06:25 -0000	2.6.2.7
@@ -1,6 +1,6 @@
 # Vend::Order - Interchange order routing routines
 #
-# $Id: Order.pm,v 2.6.2.6 2002/03/27 16:50:03 racke Exp $
+# $Id: Order.pm,v 2.6.2.7 2002/05/16 15:06:25 jon Exp $
 #
 # Copyright (C) 1996-2002 Red Hat, Inc. <interchange@redhat.com>
 #
@@ -28,7 +28,7 @@
 package Vend::Order;
 require Exporter;
 
-$VERSION = substr(q$Revision: 2.6.2.6 $, 10);
+$VERSION = substr(q$Revision: 2.6.2.7 $, 10);
 
 @ISA = qw(Exporter);
 
@@ -843,7 +843,8 @@
 
 sub check_order {
 	my ($profile, $vref) = @_;
-	my($codere) = '[-\w_#/.]+';
+	$Vend::Session->{errors} = {}
+		unless ref $Vend::Session->{errors} eq 'HASH';
 	my $params;
 	$Profile = $profile;
 	if(defined $Vend::Cfg->{OrderProfileName}->{$profile}) {
@@ -862,7 +863,6 @@
 	}
 	return undef unless $params;
 
-	my $ref = \%CGI::values;
 	$params = interpolate_html($params);
 	$params =~ s/\\\n//g;
 	@Errors = ();
@@ -903,7 +903,7 @@
 		s/^\s+//;
 		s/\s+$//;
 		($val, $var, $message) = do_check($_, $vref);
-		next if ! defined $var;
+#::logDebug("param=$_|val=$val|var=$var|message=$message");
 		if(defined $And) {
 			if($And) {
 				$val = ($last_one && $val);
@@ -914,36 +914,36 @@
 			undef $And;
 		}
 		$last_one = $val;
-		if ($val) {
-			$::Values->{"mv_status_$var"} = $message
-				if defined $message and $message;
-			delete $Vend::Session->{errors}{$var};
-			delete $::Values->{"mv_error_$var"};
-		}
-		else {
-			$status = 0;
+		$status = 0 unless $val;
+		if ($var) {
+			if ($val) {
+				$::Values->{"mv_status_$var"} = $message
+					if defined $message and $message;
+				delete $Vend::Session->{errors}{$var};
+				delete $::Values->{"mv_error_$var"};
+			}
+			else {
 # LEGACY
-			$::Values->{"mv_error_$var"} = $message;
+				$::Values->{"mv_error_$var"} = $message;
 # END LEGACY
-			$Vend::Session->{errors} = {}
-				if ! $Vend::Session->{errors};
-			if( $No_error ) {
-				# do nothing
-			}
-			elsif( $Vend::Session->{errors}{$var} ) {
-				if ($message and $Vend::Session->{errors}{$var} !~ /\Q$message/) {
-					$Vend::Session->{errors}{$var} = errmsg(
-						'%s and %s',
-						$Vend::Session->{errors}{$var},
-						$message
-					);
+				if( $No_error ) {
+					# do nothing
 				}
+				elsif( $Vend::Session->{errors}{$var} ) {
+					if ($message and $Vend::Session->{errors}{$var} !~ /\Q$message/) {
+						$Vend::Session->{errors}{$var} = errmsg(
+							'%s and %s',
+							$Vend::Session->{errors}{$var},
+							$message
+						);
+					}
+				}
+				else {
+					$Vend::Session->{errors}{$var} = $message ||
+						errmsg('%s: failed check', $var);
+				}
+				push @Errors, "$var: $message";
 			}
-			else {
-				$Vend::Session->{errors}{$var} = $message ||
-					errmsg('%s: failed check', $var);
-			}
-			push @Errors, "$var: $message";
 		}
 		if (defined $Success) {
 			$status = $Success;