diff --git a/natives/json/json.c b/natives/json/json.c index 94c7ca65..410bec6d 100644 --- a/natives/json/json.c +++ b/natives/json/json.c @@ -570,7 +570,7 @@ static int json_encode(DstArgs args) { if (args.n >= 3) { DST_ARG_BYTES(e.newline, e.newlinelen, args, 2); } else { - e.newline = (const uint8_t *)"\n"; + e.newline = (const uint8_t *)"\r\n"; e.newlinelen = 1; } } diff --git a/src/core/vm.c b/src/core/vm.c index 303df758..f8afe0f2 100644 --- a/src/core/vm.c +++ b/src/core/vm.c @@ -80,7 +80,14 @@ DstSignal dst_continue(DstFiber *fiber, Dst in, Dst *out) { dst_gcroot(in); if (startstatus == DST_STATUS_NEW) { dst_fiber_push(fiber, in); - dst_fiber_funcframe(fiber, fiber->root); + if (dst_fiber_funcframe(fiber, fiber->root)) { + dst_gcunroot(dst_wrap_fiber(fiber)); + dst_gcunroot(in); + *out = dst_wrap_string(dst_formatc( + "Could not start fiber with function of arity %d", + fiber->root->def->arity)); + return DST_SIGNAL_ERROR; + } } dst_fiber_set_status(fiber, DST_STATUS_ALIVE); stack = fiber->data + fiber->frame;