[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Pspp-cvs] pspp/src/language/expressions ChangeLog generat...
From: |
Ben Pfaff |
Subject: |
[Pspp-cvs] pspp/src/language/expressions ChangeLog generat... |
Date: |
Mon, 01 May 2006 22:14:53 +0000 |
CVSROOT: /cvsroot/pspp
Module name: pspp
Branch:
Changes by: Ben Pfaff <address@hidden> 06/05/01 22:14:53
Modified files:
src/language/expressions: ChangeLog generate.pl operations.def
parse.c parse.inc.pl private.h
Log message:
Prohibit LAG following TEMPORARY. This both matches SPSS behavior and
fixes a bug: we saved the cases for LAG before TEMPORARY but allowed
access to variables created afterward anyhow (which could cause a
segfault).
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/pspp/pspp/src/language/expressions/ChangeLog.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/pspp/pspp/src/language/expressions/generate.pl.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/pspp/pspp/src/language/expressions/operations.def.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/pspp/pspp/src/language/expressions/parse.c.diff?tr1=1.3&tr2=1.4&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/pspp/pspp/src/language/expressions/parse.inc.pl.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/pspp/pspp/src/language/expressions/private.h.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
Patches:
Index: pspp/src/language/expressions/ChangeLog
diff -u pspp/src/language/expressions/ChangeLog:1.2
pspp/src/language/expressions/ChangeLog:1.3
--- pspp/src/language/expressions/ChangeLog:1.2 Mon Apr 24 05:10:00 2006
+++ pspp/src/language/expressions/ChangeLog Mon May 1 22:14:53 2006
@@ -1,3 +1,21 @@
+Mon May 1 15:11:48 2006 Ben Pfaff <address@hidden>
+
+ Prohibit LAG following TEMPORARY. This both matches SPSS behavior
+ and fixes a bug: we saved the cases for LAG before TEMPORARY but
+ allowed access to variables created afterward anyhow (which could
+ cause a segfault).
+
+ * generate.pl: Parse "perm_only" flag on operations.
+
+ * operations.def: Add "perm_only" flag to LAG operations.
+
+ * parse.c: Disallow OPF_PERM_ONLY operations after TEMPORARY.
+
+ * parse.inc.pl: Output OPF_PERM_ONLY flag for "perm_only"
+ operations.
+
+ * private.h: Add OPF_PERM_ONLY flag.
+
Sun Apr 23 22:06:45 2006 Ben Pfaff <address@hidden>
Continue reforming error message support. In this phase, get rid
Index: pspp/src/language/expressions/generate.pl
diff -u pspp/src/language/expressions/generate.pl:1.1
pspp/src/language/expressions/generate.pl:1.2
--- pspp/src/language/expressions/generate.pl:1.1 Sat Mar 4 01:11:57 2006
+++ pspp/src/language/expressions/generate.pl Mon May 1 22:14:53 2006
@@ -233,6 +233,7 @@
$op{OPTIMIZABLE} = 1;
$op{UNIMPLEMENTED} = 0;
$op{EXTENSION} = 0;
+ $op{PERM_ONLY} = 0;
for (;;) {
if (match ('extension')) {
$op{EXTENSION} = 1;
@@ -240,6 +241,8 @@
$op{OPTIMIZABLE} = 0;
} elsif (match ('absorb_miss')) {
$op{ABSORB_MISS} = 1;
+ } elsif (match ('perm_only')) {
+ $op{PERM_ONLY} = 1;
} else {
last;
}
Index: pspp/src/language/expressions/operations.def
diff -u pspp/src/language/expressions/operations.def:1.1
pspp/src/language/expressions/operations.def:1.2
--- pspp/src/language/expressions/operations.def:1.1 Sat Mar 4 01:11:57 2006
+++ pspp/src/language/expressions/operations.def Mon May 1 22:14:53 2006
@@ -956,7 +956,7 @@
return s;
}
-no_opt function LAG (num_var v, pos_int n_before)
+no_opt perm_only function LAG (num_var v, pos_int n_before)
{
struct ccase *c = lagged_case (n_before);
if (c != NULL)
@@ -968,7 +968,7 @@
return SYSMIS;
}
-no_opt function LAG (num_var v)
+no_opt perm_only function LAG (num_var v)
{
struct ccase *c = lagged_case (1);
if (c != NULL)
@@ -980,7 +980,7 @@
return SYSMIS;
}
-no_opt string function LAG (str_var v, pos_int n_before)
+no_opt perm_only string function LAG (str_var v, pos_int n_before)
expression e;
{
struct ccase *c = lagged_case (n_before);
@@ -990,7 +990,7 @@
return empty_string;
}
-no_opt string function LAG (str_var v)
+no_opt perm_only string function LAG (str_var v)
expression e;
{
struct ccase *c = lagged_case (1);
Index: pspp/src/language/expressions/parse.c
diff -u pspp/src/language/expressions/parse.c:1.3
pspp/src/language/expressions/parse.c:1.4
--- pspp/src/language/expressions/parse.c:1.3 Thu Apr 27 02:42:01 2006
+++ pspp/src/language/expressions/parse.c Mon May 1 22:14:53 2006
@@ -1222,6 +1222,11 @@
msg (SE, _("%s is not yet implemented."), f->prototype);
goto fail;
}
+ if ((f->flags & OPF_PERM_ONLY) && in_temporary_transformations ())
+ {
+ msg (SE, _("%s may not appear after TEMPORARY."), f->prototype);
+ goto fail;
+ }
n = expr_allocate_composite (e, f - operations, args, arg_cnt);
n->composite.min_valid = min_valid != -1 ? min_valid : f->array_min_elems;
Index: pspp/src/language/expressions/parse.inc.pl
diff -u pspp/src/language/expressions/parse.inc.pl:1.1
pspp/src/language/expressions/parse.inc.pl:1.2
--- pspp/src/language/expressions/parse.inc.pl:1.1 Sat Mar 4 01:11:57 2006
+++ pspp/src/language/expressions/parse.inc.pl Mon May 1 22:14:53 2006
@@ -55,6 +55,7 @@
push (@flags, "OPF_NONOPTIMIZABLE") if !$op->{OPTIMIZABLE};
push (@flags, "OPF_EXTENSION") if $op->{EXTENSION};
push (@flags, "OPF_UNIMPLEMENTED") if $op->{UNIMPLEMENTED};
+ push (@flags, "OPF_PERM_ONLY") if $op->{PERM_ONLY};
push (@members, @flags ? join (' | ', @flags) : 0);
push (@members, "OP_$op->{RETURNS}{NAME}");
Index: pspp/src/language/expressions/private.h
diff -u pspp/src/language/expressions/private.h:1.2
pspp/src/language/expressions/private.h:1.3
--- pspp/src/language/expressions/private.h:1.2 Wed Mar 15 03:29:10 2006
+++ pspp/src/language/expressions/private.h Mon May 1 22:14:53 2006
@@ -58,7 +58,11 @@
OPF_UNIMPLEMENTED = 020,
/* If set, this operation is a PSPP extension. */
- OPF_EXTENSION = 040
+ OPF_EXTENSION = 040,
+
+ /* If set, this operation may not occur after TEMPORARY.
+ (Currently this applies only to LAG.) */
+ OPF_PERM_ONLY = 0100
};
#define EXPR_ARG_MAX 4
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Pspp-cvs] pspp/src/language/expressions ChangeLog generat...,
Ben Pfaff <=