move ov to stack variable

This commit is contained in:
c9s 2014-05-23 11:42:19 +08:00
parent d6a0d9ba96
commit 52fd5979c0
3 changed files with 14 additions and 7 deletions

View file

@ -451,3 +451,8 @@
1400815975,11316714.26,2165050.14,55188.21
1400815990,10826986.93,1780938.43,55188.21
1400816005,10584527.76,1707721.44,55924.05
1400816427,9376611.56,2006568.41,53092.46
1400816438,9096902.53,2108994.21,59074.70
1400816448,9260790.48,2131479.91,55188.21
1400816458,9303957.38,2110797.39,55924.05
1400816525,9330370.85,1985782.06,59074.70

Can't render this file because it has a wrong number of fields in line 447.

View file

@ -260,11 +260,14 @@ node * r3_tree_matchl(const node * n, char * path, int path_len, match_entry * e
edge *e;
int rc;
int i;
int ov_cnt;
// if the pcre_pattern is found, and the pointer is not NULL, then it's
// pcre pattern node, we use pcre_exec to match the nodes
if (n->pcre_pattern) {
info("pcre matching %s on %s\n", n->combined_pattern, path);
ov_cnt = (1 + n->edge_len) * 3;
int ov[ ov_cnt ];
rc = pcre_exec(
n->pcre_pattern, /* the compiled pattern */
@ -273,8 +276,8 @@ node * r3_tree_matchl(const node * n, char * path, int path_len, match_entry * e
path_len, /* the length of the subject */
0, /* start at offset 0 in the subject */
0, /* default options */
n->ov, /* output vector for substring information */
n->ov_cnt); /* number of elements in the output vector */
ov, /* output vector for substring information */
ov_cnt); /* number of elements in the output vector */
// info("rc: %d\n", rc );
if (rc < 0) {
@ -293,12 +296,12 @@ node * r3_tree_matchl(const node * n, char * path, int path_len, match_entry * e
for (i = 1; i < rc; i++)
{
char *substring_start = path + n->ov[2*i];
int substring_length = n->ov[2*i+1] - n->ov[2*i];
char *substring_start = path + ov[2*i];
int substring_length = ov[2*i+1] - ov[2*i];
// info("%2d: %.*s\n", i, substring_length, substring_start);
if ( substring_length > 0) {
int restlen = path_len - n->ov[1]; // fully match to the end
int restlen = path_len - ov[1]; // fully match to the end
// info("matched item => restlen:%d edges:%d i:%d\n", restlen, n->edge_len, i);
e = n->edges[i - 1];
@ -311,7 +314,7 @@ node * r3_tree_matchl(const node * n, char * path, int path_len, match_entry * e
return e->child && e->child->endpoint > 0 ? e->child : NULL;
}
// get the length of orginal string: $0
return r3_tree_matchl( e->child, path + (n->ov[1] - n->ov[0]), restlen, entry);
return r3_tree_matchl( e->child, path + (ov[1] - ov[0]), restlen, entry);
}
}
// does not match

View file

@ -14,7 +14,6 @@ noinst_HEADERS = \
$(NULL)
dist_noinst_DATA = \
bench_str.csv \
$(NULL)
if USE_JEMALLOC