diff options
author | tradke <tradke@17b73243-c579-4c4c-a9d2-2d5706c11dac> | 2004-04-01 11:44:52 +0000 |
---|---|---|
committer | tradke <tradke@17b73243-c579-4c4c-a9d2-2d5706c11dac> | 2004-04-01 11:44:52 +0000 |
commit | e65017e9d2b619faa575d615eb4bfeeecc8d1e21 (patch) | |
tree | abf317eac67259ffbb867ec6bd64aafabd443735 /src | |
parent | 8e53d192a34f21652285bd8c464d90e7cb2544d3 (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.c | 20 |
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; |