ssb: Fix a crash on Windows when we would call uv_async_send on a handle that had already been closed. Various other cleanup and improvements along the journey. #96
Some checks failed
Build Tilde Friends / Build-All (push) Has been cancelled
Some checks failed
Build Tilde Friends / Build-All (push) Has been cancelled
This commit is contained in:
16
src/ssb.js.c
16
src/ssb.js.c
@ -1495,10 +1495,10 @@ static JSValue _tf_ssb_sqlAsync(JSContext* context, JSValueConst this_val, int a
|
||||
uv_mutex_init(&work->lock);
|
||||
uv_async_init(tf_ssb_get_loop(ssb), &work->async, _tf_ssb_sqlAsync_start_timer);
|
||||
uv_timer_init(tf_ssb_get_loop(ssb), &work->timeout);
|
||||
JSValue result = JS_NewPromiseCapability(context, work->promise);
|
||||
JSValue error_value = JS_UNDEFINED;
|
||||
JSValue result = JS_UNDEFINED;
|
||||
if (ssb)
|
||||
{
|
||||
result = JS_NewPromiseCapability(context, work->promise);
|
||||
int32_t length = tf_util_get_length(context, argv[1]);
|
||||
for (int i = 0; i < length; i++)
|
||||
{
|
||||
@ -1541,18 +1541,6 @@ static JSValue _tf_ssb_sqlAsync(JSContext* context, JSValueConst this_val, int a
|
||||
}
|
||||
tf_ssb_run_work(ssb, _tf_ssb_sqlAsync_work, _tf_ssb_sqlAsync_after_work, work);
|
||||
}
|
||||
if (!JS_IsUndefined(error_value))
|
||||
{
|
||||
JSValue call_result = JS_Call(context, work->promise[1], JS_UNDEFINED, 1, &error_value);
|
||||
tf_util_report_error(context, call_result);
|
||||
JS_FreeValue(context, call_result);
|
||||
JS_FreeValue(context, error_value);
|
||||
JS_FreeCString(context, query);
|
||||
JS_FreeValue(context, work->promise[0]);
|
||||
JS_FreeValue(context, work->promise[1]);
|
||||
JS_FreeValue(context, work->callback);
|
||||
_tf_ssb_sqlAsync_destroy(work);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user