summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPedro Vicente Nunes <pvn@hdfgroup.org>2007-03-26 21:20:43 (GMT)
committerPedro Vicente Nunes <pvn@hdfgroup.org>2007-03-26 21:20:43 (GMT)
commit7aaf40e9f9c2d200f5a9c8bee646c0741b9cea49 (patch)
treeeec6ea4640a6e7bc4d11a11ec0aaf8780c5f607b
parentdde381add4e4bd4e03812ce8a5b678185d6296b7 (diff)
downloadhdf5-7aaf40e9f9c2d200f5a9c8bee646c0741b9cea49.zip
hdf5-7aaf40e9f9c2d200f5a9c8bee646c0741b9cea49.tar.gz
hdf5-7aaf40e9f9c2d200f5a9c8bee646c0741b9cea49.tar.bz2
[svn-r13546]
Bug fix The H5TB_find_field function was not correctly finding a string field name amongst a string list of parameters of field names in cases where the name is similar up to n characters. Solution: added an extra verify condition with the string length Tested: kagiso, simple fix
-rw-r--r--hl/src/H5TB.c28
1 files changed, 16 insertions, 12 deletions
diff --git a/hl/src/H5TB.c b/hl/src/H5TB.c
index 1e055da..8f9eb07 100644
--- a/hl/src/H5TB.c
+++ b/hl/src/H5TB.c
@@ -3457,18 +3457,22 @@ out:
static
int H5TB_find_field( const char *field, const char *field_list )
{
- const char *start = field_list;
- const char *end;
-
- while ( (end = strstr( start, "," )) != 0 ) {
- if ( strncmp(start,field,(size_t)(end-start)) == 0 ) return 1;
- start = end + 1;
- }
-
- if ( strcmp( start, field ) == 0 ) return 1;
-
- return -1;
-
+ const char *start = field_list;
+ const char *end;
+
+ while ( (end = strstr( start, "," )) != 0 )
+ {
+ size_t count = end - start;
+ if ( strncmp(start, field, count) == 0 && count == strlen(field) )
+ return 1;
+ start = end + 1;
+ }
+
+ if ( strcmp( start, field ) == 0 )
+ return 1;
+
+ return -1;
+
}