From: Sebastian B. <sb...@us...> - 2014-01-19 18:46:43
|
Update of /cvsroot/simplemail/simplemail In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv24328 Modified Files: index_external.c Log Message: Now respects the max_substring_len attribute. Index: index_external.c =================================================================== RCS file: /cvsroot/simplemail/simplemail/index_external.c,v retrieving revision 1.37 retrieving revision 1.38 diff -u -d -r1.37 -r1.38 --- index_external.c 19 Jan 2014 18:45:54 -0000 1.37 +++ index_external.c 19 Jan 2014 18:46:41 -0000 1.38 @@ -192,13 +192,16 @@ static char *bnode_read_string(struct index_external *idx, struct bnode_element *element) { char *str; + int str_len = element->str_len; + if (str_len > idx->max_substring_len) + str_len = idx->max_substring_len; fseek(idx->string_file, element->str_offset, SEEK_SET); - if (!(str = malloc(element->str_len + 1))) + if (!(str = malloc(str_len + 1))) return 0; - if (fread(str, 1, element->str_len, idx->string_file) != element->str_len) + if (fread(str, 1, str_len, idx->string_file) != str_len) return 0; - str[element->str_len] = 0; + str[str_len] = 0; return str; } @@ -216,8 +219,8 @@ { char *str = bnode_read_string(idx, e); if (!str) return 0; + *out_cmp = strncmp(str, text, idx->max_substring_len); - *out_cmp = strcmp(str, text); free(str); return 1; } @@ -644,13 +647,16 @@ if (!bnode_read_block(idx, tmp, block)) return 0; + if (text_len > idx->max_substring_len) + text_len = idx->max_substring_len; + for (;i<tmp->num_elements;i++) { int cmp; be = bnode_get_ith_element_of_node(idx, tmp, i); str = bnode_read_string(idx, be); if (!str) return 0; - cmp = strncmp(text, str, strlen(text)); + cmp = strncmp(text, str, text_len); free(str); if (!cmp) { |