summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortradke <tradke@17b73243-c579-4c4c-a9d2-2d5706c11dac>2004-04-01 11:44:52 +0000
committertradke <tradke@17b73243-c579-4c4c-a9d2-2d5706c11dac>2004-04-01 11:44:52 +0000
commite65017e9d2b619faa575d615eb4bfeeecc8d1e21 (patch)
treeabf317eac67259ffbb867ec6bd64aafabd443735 /src
parent8e53d192a34f21652285bd8c464d90e7cb2544d3 (diff)
Fixed parsing of vector groups in CCTK_TraverseString().
git-svn-id: http://svn.cactuscode.org/flesh/trunk@3634 17b73243-c579-4c4c-a9d2-2d5706c11dac
Diffstat (limited to 'src')
-rw-r--r--src/main/Groups.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/src/main/Groups.c b/src/main/Groups.c
index a86ed4d5..e3451d01 100644
--- a/src/main/Groups.c
+++ b/src/main/Groups.c
@@ -1935,7 +1935,7 @@ int CCTK_TraverseString (const char *traverse_string,
{
int retval, nesting, vindex, gindex, first, last, selected_all;
char delimiter, options_start, options_end;
- char *string, *parse_string, *group_var_string, *option_string;
+ char *tmp, *string, *parse_string, *group_var_string, *option_string;
cGroup gdata;
@@ -1981,12 +1981,20 @@ int CCTK_TraverseString (const char *traverse_string,
/* check for an old-style options string (enclosed in square brackets) */
if (*string == '[')
{
- *string = 0;
- gindex = CCTK_GroupIndex (group_var_string);
- *string = '[';
- /* continue if the current token refers to a valid vector group name
+ gindex = -1;
+ /* find matching ']' */
+ for (tmp = string+1; *tmp != ']' && *tmp; tmp++);
+ if (*tmp == ']')
+ {
+ delimiter = *++tmp;
+ *tmp = 0;
+ gindex = CCTK_GroupIndexFromVar (group_var_string);
+ *tmp = delimiter;
+ }
+ /* continue if the current token refers to a valid vector variable name
otherwise assume the start of an old-style options string */
- if (CCTK_GroupData (gindex, &gdata) || ! gdata.vectorgroup)
+ if (gindex < 0 || CCTK_GroupData (gindex, &gdata) ||
+ ! gdata.vectorgroup)
{
options_start = '['; options_end = ']';
break;