Attempting to learn about a slow memory leak.

git-svn-id: https://www.unprompted.com/svn/projects/tildefriends/trunk@3887 ed5197a5-7fde-0310-b194-c3ffbd925b24
This commit is contained in:
2022-06-04 03:01:12 +00:00
parent 5622db92a7
commit 2992b7e955
5 changed files with 114 additions and 0 deletions

View File

@ -89,6 +89,7 @@ static void _file_read_read_callback(uv_fs_t* req)
int result = uv_fs_close(req->loop, req, fsreq->file, _file_async_close_callback);
if (result < 0)
{
uv_fs_req_cleanup(req);
free(fsreq);
}
}
@ -111,6 +112,7 @@ static void _file_read_open_callback(uv_fs_t* req)
result = uv_fs_close(req->loop, req, fsreq->file, _file_async_close_callback);
if (result < 0)
{
uv_fs_req_cleanup(req);
free(fsreq);
}
}
@ -118,6 +120,7 @@ static void _file_read_open_callback(uv_fs_t* req)
else
{
tf_task_reject_promise(task, promise, JS_ThrowInternalError(context, uv_strerror(req->result)));
uv_fs_req_cleanup(req);
free(req);
}
}
@ -142,6 +145,7 @@ static JSValue _file_read_file(JSContext* context, JSValueConst this_val, int ar
if (result < 0)
{
tf_task_reject_promise(task, promise, JS_ThrowInternalError(context, uv_strerror(result)));
uv_fs_req_cleanup(&req->fs);
free(req);
}
JS_FreeCString(context, file_name);
@ -166,6 +170,7 @@ static void _file_write_write_callback(uv_fs_t* req)
int result = uv_fs_close(req->loop, req, fsreq->file, _file_async_close_callback);
if (result < 0)
{
uv_fs_req_cleanup(req);
free(fsreq);
}
}
@ -188,6 +193,7 @@ static void _file_write_open_callback(uv_fs_t* req)
result = uv_fs_close(req->loop, req, fsreq->file, _file_async_close_callback);
if (result < 0)
{
uv_fs_req_cleanup(req);
free(fsreq);
}
}
@ -195,6 +201,7 @@ static void _file_write_open_callback(uv_fs_t* req)
else
{
tf_task_reject_promise(task, promise, JS_ThrowInternalError(context, uv_strerror(req->result)));
uv_fs_req_cleanup(req);
free(req);
}
}
@ -360,6 +367,7 @@ JSValue _file_stat(JSContext* context, JSValueConst this_val, int argc, JSValueC
if (result)
{
tf_task_reject_promise(task, promise, JS_NewInt32(context, result));
uv_fs_req_cleanup(&data->_request);
free(data);
}
JS_FreeCString(context, path);