Skip to content

Commit 06cd156

Browse files
authored
fixes ptr to cstring warnings[backport] (#20848)
* fix =#13790 ptr char (+friends) should not implicitly convert to cstring * Apply suggestions from code review * first round; compiles on windows * nimPreviewSlimSystem * conversion is unsafe, cast needed * fixes more tests * fixes asyncnet * another try another error * last one * true * one more * why bugs didn't show at once * add `nimPreviewCstringConversion` switch * typo * fixes ptr to cstring warnings[backport] * add fixes Co-authored-by: xflywind <[email protected]>
1 parent 3d692d0 commit 06cd156

25 files changed

+50
-50
lines changed

compiler/lexer.nim

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -918,7 +918,7 @@ proc getSymbol(L: var Lexer, tok: var Token) =
918918
else: break
919919
tokenEnd(tok, pos-1)
920920
h = !$h
921-
tok.ident = L.cache.getIdent(addr(L.buf[L.bufpos]), pos - L.bufpos, h)
921+
tok.ident = L.cache.getIdent(cast[cstring](addr(L.buf[L.bufpos])), pos - L.bufpos, h)
922922
if (tok.ident.id < ord(tokKeywordLow) - ord(tkSymbol)) or
923923
(tok.ident.id > ord(tokKeywordHigh) - ord(tkSymbol)):
924924
tok.tokType = tkSymbol
@@ -932,7 +932,7 @@ proc getSymbol(L: var Lexer, tok: var Token) =
932932
proc endOperator(L: var Lexer, tok: var Token, pos: int,
933933
hash: Hash) {.inline.} =
934934
var h = !$hash
935-
tok.ident = L.cache.getIdent(addr(L.buf[L.bufpos]), pos - L.bufpos, h)
935+
tok.ident = L.cache.getIdent(cast[cstring](addr(L.buf[L.bufpos])), pos - L.bufpos, h)
936936
if (tok.ident.id < oprLow) or (tok.ident.id > oprHigh): tok.tokType = tkOpr
937937
else: tok.tokType = TokType(tok.ident.id - oprLow + ord(tkColon))
938938
L.bufpos = pos

compiler/sighashes.nim

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ when defined(nimPreviewSlimSystem):
2020
proc `&=`(c: var MD5Context, s: string) = md5Update(c, s, s.len)
2121
proc `&=`(c: var MD5Context, ch: char) =
2222
# XXX suspicious code here; relies on ch being zero terminated?
23-
md5Update(c, unsafeAddr ch, 1)
23+
md5Update(c, cast[cstring](unsafeAddr ch), 1)
2424

2525
proc `&=`(c: var MD5Context, i: BiggestInt) =
2626
md5Update(c, cast[cstring](unsafeAddr i), sizeof(i))

lib/impure/db_odbc.nim

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ proc getErrInfo(db: var DbConn): tuple[res: int, ss, ne, msg: string] {.
137137
511.TSqlSmallInt, retSz.addr)
138138
except:
139139
discard
140-
return (res.int, $(addr sqlState), $(addr nativeErr), $(addr errMsg))
140+
return (res.int, $(cast[cstring](addr sqlState)), $cast[cstring](addr nativeErr), $cast[cstring](addr errMsg))
141141

142142
proc dbError*(db: var DbConn) {.
143143
tags: [ReadDbEffect, WriteDbEffect], raises: [DbError] .} =
@@ -187,7 +187,7 @@ proc sqlGetDBMS(db: var DbConn): string {.
187187
db.sqlCheck(SQLGetInfo(db.hDb, SQL_DBMS_NAME, cast[SqlPointer](buf.addr),
188188
4095.TSqlSmallInt, sz.addr))
189189
except: discard
190-
return $(addr buf)
190+
return $(cast[cstring](addr buf))
191191

192192
proc dbQuote*(s: string): string {.noSideEffect.} =
193193
## DB quotes the string.
@@ -291,7 +291,7 @@ iterator fastRows*(db: var DbConn, query: SqlQuery,
291291
buf[0] = '\0'
292292
db.sqlCheck(SQLGetData(db.stmt, colId.SqlUSmallInt, SQL_C_CHAR,
293293
cast[cstring](buf.addr), 4095, sz.addr))
294-
rowRes[colId-1] = $(addr buf)
294+
rowRes[colId-1] = $cast[cstring]((addr buf))
295295
yield rowRes
296296
res = SQLFetch(db.stmt)
297297
properFreeResult(SQL_HANDLE_STMT, db.stmt)
@@ -319,7 +319,7 @@ iterator instantRows*(db: var DbConn, query: SqlQuery,
319319
buf[0] = '\0'
320320
db.sqlCheck(SQLGetData(db.stmt, colId.SqlUSmallInt, SQL_C_CHAR,
321321
cast[cstring](buf.addr), 4095, sz.addr))
322-
rowRes[colId-1] = $(addr buf)
322+
rowRes[colId-1] = $cast[cstring](addr buf)
323323
yield (row: rowRes, len: cCnt.int)
324324
res = SQLFetch(db.stmt)
325325
properFreeResult(SQL_HANDLE_STMT, db.stmt)
@@ -358,7 +358,7 @@ proc getRow*(db: var DbConn, query: SqlQuery,
358358
buf[0] = '\0'
359359
db.sqlCheck(SQLGetData(db.stmt, colId.SqlUSmallInt, SQL_C_CHAR,
360360
cast[cstring](buf.addr), 4095, sz.addr))
361-
rowRes[colId-1] = $(addr buf)
361+
rowRes[colId-1] = $cast[cstring](addr buf)
362362
res = SQLFetch(db.stmt)
363363
result = rowRes
364364
properFreeResult(SQL_HANDLE_STMT, db.stmt)
@@ -386,7 +386,7 @@ proc getAllRows*(db: var DbConn, query: SqlQuery,
386386
buf[0] = '\0'
387387
db.sqlCheck(SQLGetData(db.stmt, colId.SqlUSmallInt, SQL_C_CHAR,
388388
cast[cstring](buf.addr), 4095, sz.addr))
389-
rowRes[colId-1] = $(addr buf)
389+
rowRes[colId-1] = $cast[cstring](addr buf)
390390
rows.add(rowRes)
391391
res = SQLFetch(db.stmt)
392392
result = rows

lib/posix/posix_utils.nim

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ type Uname* = object
2121
sysname*, nodename*, release*, version*, machine*: string
2222

2323
template charArrayToString(input: typed): string =
24-
$cstring(addr input)
24+
$cast[cstring](addr input)
2525

2626
proc uname*(): Uname =
2727
## Provides system information in a `Uname` struct with sysname, nodename,

lib/pure/asyncnet.nim

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@ when defineSsl:
229229
let len = bioCtrlPending(socket.bioOut)
230230
if len > 0:
231231
var data = newString(len)
232-
let read = bioRead(socket.bioOut, addr data[0], len)
232+
let read = bioRead(socket.bioOut, cast[cstring](addr data[0]), len)
233233
assert read != 0
234234
if read < 0:
235235
raiseSSLError()
@@ -247,7 +247,7 @@ when defineSsl:
247247
var data = await recv(socket.fd.AsyncFD, BufferSize, flags)
248248
let length = len(data)
249249
if length > 0:
250-
let ret = bioWrite(socket.bioIn, addr data[0], length.cint)
250+
let ret = bioWrite(socket.bioIn, cast[cstring](addr data[0]), length.cint)
251251
if ret < 0:
252252
raiseSSLError()
253253
elif length == 0:
@@ -459,7 +459,7 @@ proc send*(socket: AsyncSocket, data: string,
459459
when defineSsl:
460460
var copy = data
461461
sslLoop(socket, flags,
462-
sslWrite(socket.sslHandle, addr copy[0], copy.len.cint))
462+
sslWrite(socket.sslHandle, cast[cstring](addr copy[0]), copy.len.cint))
463463
await sendPendingSslData(socket, flags)
464464
else:
465465
await send(socket.fd.AsyncFD, data, flags)

lib/pure/nativesockets.nim

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -481,13 +481,13 @@ when not useNimNetLite:
481481
result = newString(addrLen)
482482
let addr6 = addr cast[ptr Sockaddr_in6](sockAddr).sin6_addr
483483
when not useWinVersion:
484-
if posix.inet_ntop(posix.AF_INET6, addr6, addr result[0],
484+
if posix.inet_ntop(posix.AF_INET6, addr6, cast[cstring](addr result[0]),
485485
result.len.int32) == nil:
486486
raiseOSError(osLastError())
487487
if posix.IN6_IS_ADDR_V4MAPPED(addr6) != 0:
488488
result.setSlice("::ffff:".len..<addrLen)
489489
else:
490-
if winlean.inet_ntop(winlean.AF_INET6, addr6, addr result[0],
490+
if winlean.inet_ntop(winlean.AF_INET6, addr6, cast[cstring](addr result[0]),
491491
result.len.int32) == nil:
492492
raiseOSError(osLastError())
493493
setLen(result, len(cstring(result)))
@@ -509,23 +509,23 @@ when not useNimNetLite:
509509
if sockAddr.sa_family.cint == nativeAfInet:
510510
let addr4 = addr cast[ptr Sockaddr_in](sockAddr).sin_addr
511511
when not useWinVersion:
512-
if posix.inet_ntop(posix.AF_INET, addr4, addr strAddress[0],
512+
if posix.inet_ntop(posix.AF_INET, addr4, cast[cstring](addr strAddress[0]),
513513
strAddress.len.int32) == nil:
514514
raiseOSError(osLastError())
515515
else:
516-
if winlean.inet_ntop(winlean.AF_INET, addr4, addr strAddress[0],
516+
if winlean.inet_ntop(winlean.AF_INET, addr4, cast[cstring](addr strAddress[0]),
517517
strAddress.len.int32) == nil:
518518
raiseOSError(osLastError())
519519
elif sockAddr.sa_family.cint == nativeAfInet6:
520520
let addr6 = addr cast[ptr Sockaddr_in6](sockAddr).sin6_addr
521521
when not useWinVersion:
522-
if posix.inet_ntop(posix.AF_INET6, addr6, addr strAddress[0],
522+
if posix.inet_ntop(posix.AF_INET6, addr6, cast[cstring](addr strAddress[0]),
523523
strAddress.len.int32) == nil:
524524
raiseOSError(osLastError())
525525
if posix.IN6_IS_ADDR_V4MAPPED(addr6) != 0:
526526
strAddress.setSlice("::ffff:".len..<length)
527527
else:
528-
if winlean.inet_ntop(winlean.AF_INET6, addr6, addr strAddress[0],
528+
if winlean.inet_ntop(winlean.AF_INET6, addr6, cast[cstring](addr strAddress[0]),
529529
strAddress.len.int32) == nil:
530530
raiseOSError(osLastError())
531531
else:
@@ -584,7 +584,7 @@ when not useNimNetLite:
584584
# Cannot use INET6_ADDRSTRLEN here, because it's a C define.
585585
result[0] = newString(64)
586586
if inet_ntop(name.sin6_family.cint,
587-
addr name.sin6_addr, addr result[0][0], (result[0].len+1).int32).isNil:
587+
addr name.sin6_addr, cast[cstring](addr result[0][0]), (result[0].len+1).int32).isNil:
588588
raiseOSError(osLastError())
589589
setLen(result[0], result[0].cstring.len)
590590
result[1] = Port(nativesockets.ntohs(name.sin6_port))
@@ -621,7 +621,7 @@ when not useNimNetLite:
621621
# Cannot use INET6_ADDRSTRLEN here, because it's a C define.
622622
result[0] = newString(64)
623623
if inet_ntop(name.sin6_family.cint,
624-
addr name.sin6_addr, addr result[0][0], (result[0].len+1).int32).isNil:
624+
addr name.sin6_addr, cast[cstring](addr result[0][0]), (result[0].len+1).int32).isNil:
625625
raiseOSError(osLastError())
626626
setLen(result[0], result[0].cstring.len)
627627
result[1] = Port(nativesockets.ntohs(name.sin6_port))

lib/pure/strutils.nim

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2435,11 +2435,11 @@ func formatBiggestFloat*(f: BiggestFloat, format: FloatFormatMode = ffDefault,
24352435
frmtstr[3] = '*'
24362436
frmtstr[4] = floatFormatToChar[format]
24372437
frmtstr[5] = '\0'
2438-
L = c_sprintf(addr buf, addr frmtstr, precision, f)
2438+
L = c_sprintf(cast[cstring](addr buf), cast[cstring](addr frmtstr), precision, f)
24392439
else:
24402440
frmtstr[1] = floatFormatToChar[format]
24412441
frmtstr[2] = '\0'
2442-
L = c_sprintf(addr buf, addr frmtstr, f)
2442+
L = c_sprintf(cast[cstring](addr buf), cast[cstring](addr frmtstr), f)
24432443
result = newString(L)
24442444
for i in 0 ..< L:
24452445
# Depending on the locale either dot or comma is produced,

lib/std/formatfloat.nim

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ proc writeFloatToBufferSprintf*(buf: var array[65, char]; value: BiggestFloat):
4949
##
5050
## returns the amount of bytes written to `buf` not counting the
5151
## terminating '\0' character.
52-
var n: int = c_sprintf(addr buf, "%.16g", value)
52+
var n: int = c_sprintf(cast[cstring](addr buf), "%.16g", value)
5353
var hasDot = false
5454
for i in 0..n-1:
5555
if buf[i] == ',':
@@ -90,15 +90,15 @@ proc addFloatRoundtrip*(result: var string; x: float | float32) =
9090
else:
9191
var buffer {.noinit.}: array[65, char]
9292
let n = writeFloatToBufferRoundtrip(buffer, x)
93-
result.addCstringN(cstring(buffer[0].addr), n)
93+
result.addCstringN(cast[cstring](buffer[0].addr), n)
9494

9595
proc addFloatSprintf*(result: var string; x: float) =
9696
when nimvm:
9797
doAssert false
9898
else:
9999
var buffer {.noinit.}: array[65, char]
100100
let n = writeFloatToBufferSprintf(buffer, x)
101-
result.addCstringN(cstring(buffer[0].addr), n)
101+
result.addCstringN(cast[cstring](buffer[0].addr), n)
102102

103103
proc nimFloatToString(a: float): cstring =
104104
## ensures the result doesn't print like an integer, i.e. return 2.0, not 2

lib/std/private/oscommon.nim

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ when defined(windows) and not weirdTarget:
6363
template findNextFile*(a, b: untyped): untyped = findNextFileA(a, b)
6464
template getCommandLine*(): untyped = getCommandLineA()
6565

66-
template getFilename*(f: untyped): untyped = $cstring(addr f.cFileName)
66+
template getFilename*(f: untyped): untyped = $cast[cstring](addr f.cFileName)
6767

6868
proc skipFindData*(f: WIN32_FIND_DATA): bool {.inline.} =
6969
# Note - takes advantage of null delimiter in the cstring

lib/std/private/osdirs.nim

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ iterator walkDir*(dir: string; relative = false, checkDir = false,
231231
while true:
232232
var x = readdir(d)
233233
if x == nil: break
234-
var y = $cstring(addr x.d_name)
234+
var y = $cast[cstring](addr x.d_name)
235235
if y != "." and y != "..":
236236
var s: Stat
237237
let path = dir / y

lib/std/private/strimpl.nim

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ func find*(s, sub: cstring, start: Natural = 0, last = 0): int =
106106
if sub.len > s.len - start: return -1
107107
if sub.len == 1: return find(s, sub[0], start, last)
108108
if last == 0 and s.len > start:
109-
let found = c_strstr(s[start].unsafeAddr, sub)
109+
let found = c_strstr(cast[cstring](s[start].unsafeAddr), sub)
110110
if not found.isNil:
111111
result = cast[ByteAddress](found) -% cast[ByteAddress](s)
112112
else:

lib/std/private/win_setenv.nim

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,9 +94,9 @@ else:
9494
var buf = newSeq[char](requiredSize + 1)
9595
let buf2 = buf[0].addr
9696
if wcstombs(buf2, wideName, csize_t(requiredSize + 1)) != high(csize_t):
97-
var ptrToEnv = c_getenv(buf2)
97+
var ptrToEnv = c_getenv(cast[cstring](buf2))
9898
ptrToEnv[0] = '\0'
99-
ptrToEnv = c_getenv(buf2)
99+
ptrToEnv = c_getenv(cast[cstring](buf2))
100100
ptrToEnv[1] = '='
101101

102102
# And now, we have to update the outer environment to have a proper empty value.

lib/std/syncio.nim

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -467,7 +467,7 @@ proc readLine*(f: File, line: var string): bool {.tags: [ReadIOEffect],
467467
while true:
468468
# fixes #9634; this pattern may need to be abstracted as a template if reused;
469469
# likely other io procs need this for correctness.
470-
fgetsSuccess = c_fgets(addr line[pos], sp.cint, f) != nil
470+
fgetsSuccess = c_fgets(cast[cstring](addr line[pos]), sp.cint, f) != nil
471471
if fgetsSuccess: break
472472
when not defined(nimscript):
473473
if errno == EINTR:

lib/system.nim

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1844,7 +1844,7 @@ proc debugEcho*(x: varargs[typed, `$`]) {.magic: "Echo", noSideEffect,
18441844
when hostOS == "standalone" and defined(nogc):
18451845
proc nimToCStringConv(s: NimString): cstring {.compilerproc, inline.} =
18461846
if s == nil or s.len == 0: result = cstring""
1847-
else: result = cstring(addr s.data)
1847+
else: result = cast[cstring](addr s.data)
18481848

18491849
proc getTypeInfo*[T](x: T): pointer {.magic: "GetTypeInfo", benign.}
18501850
## Get type information for `x`.

lib/system/dyncalls.nim

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ elif defined(windows) or defined(dos):
161161
dec(m)
162162
k = k div 10
163163
if k == 0: break
164-
result = getProcAddress(cast[THINSTANCE](lib), addr decorated)
164+
result = getProcAddress(cast[THINSTANCE](lib), cast[cstring](addr decorated))
165165
if result != nil: return
166166
procAddrError(name)
167167

lib/system/excpt.nim

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -397,9 +397,9 @@ proc reportUnhandledErrorAux(e: ref Exception) {.nodestroy, gcsafe.} =
397397
xadd(buf, e.name, e.name.len)
398398
add(buf, "]\n")
399399
if onUnhandledException != nil:
400-
onUnhandledException($buf.addr)
400+
onUnhandledException($cast[cstring](buf.addr))
401401
else:
402-
showErrorMessage(buf.addr, L)
402+
showErrorMessage(cast[cstring](buf.addr), L)
403403

404404
proc reportUnhandledError(e: ref Exception) {.nodestroy, gcsafe.} =
405405
if unhandledExceptionHook != nil:

lib/system/repr.nim

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ proc reprFloat(x: float): string {.compilerproc.} = return $x
1717

1818
proc reprPointer(x: pointer): string {.compilerproc.} =
1919
result = newString(60)
20-
let n = c_sprintf(addr result[0], "%p", x)
20+
let n = c_sprintf(cast[cstring](addr result[0]), "%p", x)
2121
setLen(result, n)
2222

2323
proc reprStrAux(result: var string, s: cstring; len: int) =

lib/system/strmantle.nim

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,7 @@ proc nimParseBiggestFloat(s: openArray[char], number: var BiggestFloat,
232232
t[ti-2] = ('0'.ord + absExponent mod 10).char
233233
absExponent = absExponent div 10
234234
t[ti-3] = ('0'.ord + absExponent mod 10).char
235-
number = c_strtod(addr t, nil)
235+
number = c_strtod(cast[cstring](addr t), nil)
236236

237237
when defined(nimHasInvariant):
238238
{.pop.} # staticBoundChecks

lib/system/strs_v2.nim

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ proc cstrToNimstr(str: cstring): NimStringV2 {.compilerRtl.} =
8989

9090
proc nimToCStringConv(s: NimStringV2): cstring {.compilerproc, nonReloadable, inline.} =
9191
if s.len == 0: result = cstring""
92-
else: result = cstring(unsafeAddr s.p.data)
92+
else: result = cast[cstring](unsafeAddr s.p.data)
9393

9494
proc appendString(dest: var NimStringV2; src: NimStringV2) {.compilerproc, inline.} =
9595
if src.len > 0:

lib/system/sysstr.nim

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ proc copyStr(s: NimString, start: int): NimString {.compilerproc.} =
9191

9292
proc nimToCStringConv(s: NimString): cstring {.compilerproc, nonReloadable, inline.} =
9393
if s == nil or s.len == 0: result = cstring""
94-
else: result = cstring(addr s.data)
94+
else: result = cast[cstring](addr s.data)
9595

9696
proc toNimStr(str: cstring, len: int): NimString {.compilerproc.} =
9797
result = rawNewStringNoInit(len)

lib/wrappers/openssl.nim

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -804,10 +804,10 @@ proc md5_File*(file: string): string {.raises: [IOError,Exception].} =
804804
while (let bytes = f.readChars(buf); bytes > 0):
805805
discard md5_Update(ctx, buf[0].addr, cast[csize_t](bytes))
806806

807-
discard md5_Final(buf[0].addr, ctx)
807+
discard md5_Final(cast[cstring](buf[0].addr), ctx)
808808
f.close
809809

810-
result = hexStr(addr buf)
810+
result = hexStr(cast[cstring](addr buf))
811811

812812
proc md5_Str*(str: string): string =
813813
## Generate MD5 hash for a string. Result is a 32 character
@@ -824,8 +824,8 @@ proc md5_Str*(str: string): string =
824824
discard md5_Update(ctx, input[i].addr, cast[csize_t](L))
825825
i += L
826826

827-
discard md5_Final(addr res, ctx)
828-
result = hexStr(addr res)
827+
discard md5_Final(cast[cstring](addr res), ctx)
828+
result = hexStr(cast[cstring](addr res))
829829

830830
when defined(nimHasStyleChecks):
831831
{.pop.}

tests/async/tnewasyncudp.nim

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ proc launchSwarm(name: ptr SockAddr) {.async.} =
5858
16384, cast[ptr SockAddr](addr saddr),
5959
addr slen)
6060
size = 0
61-
var grammString = $cstring(addr buffer)
61+
var grammString = $cast[cstring](addr buffer)
6262
if grammString == message:
6363
saveSendingPort(sockport)
6464
inc(recvCount)
@@ -80,7 +80,7 @@ proc readMessages(server: AsyncFD) {.async.} =
8080
16384, cast[ptr SockAddr](addr(saddr)),
8181
addr(slen))
8282
size = 0
83-
var grammString = $cstring(addr buffer)
83+
var grammString = $cast[cstring](addr buffer)
8484
if grammString.startsWith("Message ") and
8585
saddr.sin_addr.s_addr == nativesockets.ntohl(INADDR_LOOPBACK.uint32):
8686
await sendTo(server, addr grammString[0], len(grammString),

tests/float/tfloat4.nim

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ proc c_sprintf(buf, fmt: cstring) {.importc:"sprintf", header: "<stdio.h>", vara
88

99
proc floatToStr(f: float64): string =
1010
var buffer: array[128, char]
11-
c_sprintf(addr buffer, "%.16e", f)
11+
c_sprintf(cast[cstring](addr buffer), "%.16e", f)
1212
result = ""
1313
for ch in buffer:
1414
if ch == '\0':

0 commit comments

Comments
 (0)