|
@@ -141,6 +141,7 @@ void dbt_clean_where(int n, db_key_t* _k, db_op_t* _op, db_val_t* _v)
|
|
|
if(_k) {
|
|
|
for(i=0; i < n; i++) {
|
|
|
pkg_free(_k[i]->s);
|
|
|
+ pkg_free(_k[i]);
|
|
|
}
|
|
|
pkg_free(_k);
|
|
|
}
|
|
@@ -167,7 +168,7 @@ int dbt_build_where(char* where, db_key_t** _k, db_op_t** _o, db_val_t** _v)
|
|
|
char** _o1 = NULL;
|
|
|
db_val_t* _v1 = NULL;
|
|
|
regmatch_t* matches = NULL;
|
|
|
- int l;
|
|
|
+ int n, l;
|
|
|
int len;
|
|
|
regex_t preg;
|
|
|
int offset = 0;
|
|
@@ -214,9 +215,9 @@ int dbt_build_where(char* where, db_key_t** _k, db_op_t** _o, db_val_t** _v)
|
|
|
// needs changes in dbt_query / dbt_row_match
|
|
|
|
|
|
l = matches[2].rm_eo - matches[2].rm_so;
|
|
|
- _k1[idx] = pkg_malloc(sizeof(str)+l+1);
|
|
|
+ _k1[idx] = pkg_malloc(sizeof(db_key_t));
|
|
|
_k1[idx]->len = l;
|
|
|
- _k1[idx]->s = (char*) (_k1[idx]+sizeof(str));
|
|
|
+ _k1[idx]->s = pkg_malloc(sizeof(char) * (l+1));
|
|
|
strncpy(_k1[idx]->s, buffer+matches[2].rm_so, l);
|
|
|
_k1[idx]->s[l]='\0';
|
|
|
|
|
@@ -237,11 +238,11 @@ int dbt_build_where(char* where, db_key_t** _k, db_op_t** _o, db_val_t** _v)
|
|
|
_v1[idx].val.str_val.s = pkg_malloc(l+1);
|
|
|
strncpy(_v1[idx].val.str_val.s, buffer+matches[5].rm_so, l);
|
|
|
}
|
|
|
-/* int n;
|
|
|
- for(n=0; n < MAX_MATCH; n++) {
|
|
|
- LM_ERR("MATCH RESULT %d - %d,%d\n", n, matches[n].rm_so, matches[n].rm_eo);
|
|
|
- }
|
|
|
-*/
|
|
|
+
|
|
|
+// for(n=0; n < MAX_MATCH; n++) {
|
|
|
+// LM_ERR("MATCH RESULT %d - %d,%d\n", n, matches[n].rm_so, matches[n].rm_eo);
|
|
|
+// }
|
|
|
+
|
|
|
if(matches[0].rm_eo != -1)
|
|
|
offset += matches[0].rm_eo;
|
|
|
|