Skip to content

Commit

Permalink
fix asan error due to search params destructor
Browse files Browse the repository at this point in the history
  • Loading branch information
anonrig committed Nov 25, 2024
1 parent 694e3c3 commit 70aead5
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 4 deletions.
2 changes: 1 addition & 1 deletion src/workerd/api/url-standard.c++
Original file line number Diff line number Diff line change
Expand Up @@ -225,7 +225,7 @@ void URLSearchParams::update() {
void URLSearchParams::reset() {
KJ_IF_SOME(url, maybeUrl) {
auto search = kj::Maybe(url.inner.getSearch());
inner = initFromSearch(search);
inner.reset(search);
}
}

Expand Down
4 changes: 1 addition & 3 deletions src/workerd/api/wpt/url-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -128,9 +128,7 @@ export const urlSearchParamsConstructor = run(
}
);
export const urlSearchParamsDelete = run('urlsearchparams-delete.any.js');
export const urlSearchParamsForEach = run('urlsearchparams-foreach.any.js', {
expectedFailures: ['For-of Check'],
});
export const urlSearchParamsForEach = run('urlsearchparams-foreach.any.js');
export const urlSearchParamsGetAny = run('urlsearchparams-get.any.js');
export const urlSearchParamsGetAll = run('urlsearchparams-getall.any.js');
export const urlSearchParamsHas = run('urlsearchparams-has.any.js');
Expand Down
8 changes: 8 additions & 0 deletions src/workerd/jsg/url.c++
Original file line number Diff line number Diff line change
Expand Up @@ -352,6 +352,14 @@ bool UrlSearchParams::operator==(const UrlSearchParams& other) const {
return toStr() == other.toStr();
}

void UrlSearchParams::reset(kj::Maybe<kj::ArrayPtr<const char>> input) {
KJ_IF_SOME(i, input) {
ada_search_params_reset(inner, i.begin(), i.size());
} else {
ada_search_params_reset(inner, nullptr, 0);
}
}

kj::Maybe<UrlSearchParams> UrlSearchParams::tryParse(kj::ArrayPtr<const char> input) {
ada_url_search_params result = ada_parse_search_params(input.begin(), input.size());
if (!result) return kj::none;
Expand Down
2 changes: 2 additions & 0 deletions src/workerd/jsg/url.h
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,8 @@ class UrlSearchParams final {
tracker.trackField("inner", toStr());
}

void reset(kj::Maybe<kj::ArrayPtr<const char>> input);

private:
UrlSearchParams(kj::Own<void> inner);
kj::Own<void> inner;
Expand Down

0 comments on commit 70aead5

Please sign in to comment.