From 486e95574d796cd1ce703aff4bc5b8f9f3021333 Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Tue, 13 Jan 2009 20:41:54 -0800 Subject: [PATCH] Put unique dictionary indexes into internal variables Code that Jason is working on creates some internal variables, using var_create_internal(), and wants to hash those variables based on their dictionary indexes, along with some other variables that are actually in a dictionary. Thus, the internal variables need to have unique dictionary indexes. --- src/data/variable.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/data/variable.c b/src/data/variable.c index ccbe65dc..30cf03b1 100644 --- a/src/data/variable.c +++ b/src/data/variable.c @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 1997-9, 2000, 2006 Free Software Foundation, Inc. + Copyright (C) 1997-9, 2000, 2006, 2009 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -148,17 +148,21 @@ var_clone (const struct variable *old_var) return new_var; } -/* Create a variable to be used for internal calculations only */ +/* Create a variable to be used for internal calculations only. + The variable is assigned a unique dictionary index and a case + index of CASE_IDX. */ struct variable * var_create_internal (int case_idx) { struct variable *v = var_create ("$internal", 0); - struct vardict_info vdi; + static int counter = INT_MAX / 2; vdi.dict = NULL; - vdi.dict_index = 0; vdi.case_index = case_idx; + vdi.dict_index = counter++; + if (counter == INT_MAX) + counter = INT_MAX / 2; var_set_vardict (v, &vdi); -- 2.30.2