mirror of
https://github.com/nim-lang/Nim.git
synced 2026-01-07 13:33:22 +00:00
* fix #15148 Co-authored-by: alaviss <leorize+oss@disroot.org>
This commit is contained in:
@@ -379,7 +379,7 @@ proc writeBuffer*(f: AsyncFile, buf: pointer, size: int): Future[void] =
|
||||
|
||||
proc cb(fd: AsyncFD): bool =
|
||||
result = true
|
||||
let remainderSize = size-written
|
||||
let remainderSize = size - written
|
||||
var cbuf = cast[cstring](buf)
|
||||
let res = write(fd.cint, addr cbuf[written], remainderSize.cint)
|
||||
if res < 0:
|
||||
@@ -409,7 +409,7 @@ proc write*(f: AsyncFile, data: string): Future[void] =
|
||||
var copy = data
|
||||
when defined(windows) or defined(nimdoc):
|
||||
var buffer = alloc0(data.len)
|
||||
copyMem(buffer, addr copy[0], data.len)
|
||||
copyMem(buffer, copy.cstring, data.len)
|
||||
|
||||
var ol = newCustom()
|
||||
ol.data = CompletionData(fd: f.fd, cb:
|
||||
@@ -454,8 +454,15 @@ proc write*(f: AsyncFile, data: string): Future[void] =
|
||||
|
||||
proc cb(fd: AsyncFD): bool =
|
||||
result = true
|
||||
let remainderSize = data.len-written
|
||||
let res = write(fd.cint, addr copy[written], remainderSize.cint)
|
||||
|
||||
let remainderSize = data.len - written
|
||||
|
||||
let res =
|
||||
if data.len == 0:
|
||||
write(fd.cint, copy.cstring, 0)
|
||||
else:
|
||||
write(fd.cint, addr copy[written], remainderSize.cint)
|
||||
|
||||
if res < 0:
|
||||
let lastError = osLastError()
|
||||
if lastError.int32 != EAGAIN:
|
||||
|
||||
12
tests/async/t15148.nim
Normal file
12
tests/async/t15148.nim
Normal file
@@ -0,0 +1,12 @@
|
||||
import asyncdispatch, asyncfile, os
|
||||
|
||||
const Filename = "t15148.txt"
|
||||
|
||||
proc saveEmpty() {.async.} =
|
||||
let
|
||||
text = ""
|
||||
file = openAsync(Filename, fmWrite)
|
||||
await file.write(text)
|
||||
file.close()
|
||||
|
||||
waitFor saveEmpty()
|
||||
Reference in New Issue
Block a user