예제 #1
0
파일: parse.c 프로젝트: CaioPaiola/watchman
void w_query_delref(w_query *query)
{
  uint32_t i;

  if (!w_refcnt_del(&query->refcnt)) {
    return;
  }

  for (i = 0; i < query->npaths; i++) {
    if (query->paths[i].name) {
      w_string_delref(query->paths[i].name);
    }
  }
  free(query->paths);

  if (query->since_spec) {
    w_clockspec_free(query->since_spec);
  }

  if (query->expr) {
    w_query_expr_delref(query->expr);
  }

  free(query);
}
예제 #2
0
파일: parse.c 프로젝트: light60/watchman
void w_query_expr_delref(w_query_expr *expr)
{
  if (!w_refcnt_del(&expr->refcnt)) {
    return;
  }
  if (expr->dispose) {
    expr->dispose(expr->data);
  }
  free(expr);
}
예제 #3
0
파일: string.c 프로젝트: CCoder123/watchman
void w_string_delref(w_string_t *str)
{
  if (!w_refcnt_del(&str->refcnt)) return;
  if (str->slice) w_string_delref(str->slice);
  free(str);
}