[PATCH 1/2] jscript: Only remove one reference to each entry when clearing the Map.
Gabriel Ivăncescu
gabrielopcode at gmail.com
Mon Jun 6 08:53:33 CDT 2022
Checking for list_empty doesn't stop until all entries have been removed,
no matter their ref count.
Signed-off-by: Gabriel Ivăncescu <gabrielopcode at gmail.com>
---
dlls/jscript/set.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/dlls/jscript/set.c b/dlls/jscript/set.c
index d1ea663..951c5ba 100644
--- a/dlls/jscript/set.c
+++ b/dlls/jscript/set.c
@@ -223,6 +223,7 @@ static HRESULT iterate_map(MapInstance *map, script_ctx_t *ctx, unsigned argc, j
static HRESULT Map_clear(script_ctx_t *ctx, jsval_t vthis, WORD flags, unsigned argc, jsval_t *argv,
jsval_t *r)
{
+ struct jsval_map_entry *entry, *entry2;
MapInstance *map;
HRESULT hres;
@@ -232,10 +233,8 @@ static HRESULT Map_clear(script_ctx_t *ctx, jsval_t vthis, WORD flags, unsigned
TRACE("%p\n", map);
- while(!list_empty(&map->entries)) {
- struct jsval_map_entry *entry = LIST_ENTRY(list_head(&map->entries), struct jsval_map_entry, list_entry);
+ LIST_FOR_EACH_ENTRY_SAFE(entry, entry2, &map->entries, struct jsval_map_entry, list_entry)
delete_map_entry(map, entry);
- }
if(r) *r = jsval_undefined();
return S_OK;
--
2.34.1
More information about the wine-devel
mailing list