Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions compiler/lexer.nim
Original file line number Diff line number Diff line change
Expand Up @@ -918,7 +918,7 @@ proc getSymbol(L: var Lexer, tok: var Token) =
else: break
tokenEnd(tok, pos-1)
h = !$h
tok.ident = L.cache.getIdent(addr(L.buf[L.bufpos]), pos - L.bufpos, h)
tok.ident = L.cache.getIdent(cast[cstring](addr(L.buf[L.bufpos])), pos - L.bufpos, h)
if (tok.ident.id < ord(tokKeywordLow) - ord(tkSymbol)) or
(tok.ident.id > ord(tokKeywordHigh) - ord(tkSymbol)):
tok.tokType = tkSymbol
Expand All @@ -932,7 +932,7 @@ proc getSymbol(L: var Lexer, tok: var Token) =
proc endOperator(L: var Lexer, tok: var Token, pos: int,
hash: Hash) {.inline.} =
var h = !$hash
tok.ident = L.cache.getIdent(addr(L.buf[L.bufpos]), pos - L.bufpos, h)
tok.ident = L.cache.getIdent(cast[cstring](addr(L.buf[L.bufpos])), pos - L.bufpos, h)
if (tok.ident.id < oprLow) or (tok.ident.id > oprHigh): tok.tokType = tkOpr
else: tok.tokType = TokType(tok.ident.id - oprLow + ord(tkColon))
L.bufpos = pos
Expand Down
2 changes: 1 addition & 1 deletion compiler/sighashes.nim
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ when defined(nimPreviewSlimSystem):
proc `&=`(c: var MD5Context, s: string) = md5Update(c, s, s.len)
proc `&=`(c: var MD5Context, ch: char) =
# XXX suspicious code here; relies on ch being zero terminated?
md5Update(c, unsafeAddr ch, 1)
md5Update(c, cast[cstring](unsafeAddr ch), 1)

proc `&=`(c: var MD5Context, i: BiggestInt) =
md5Update(c, cast[cstring](unsafeAddr i), sizeof(i))
Expand Down
12 changes: 6 additions & 6 deletions lib/impure/db_odbc.nim
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ proc getErrInfo(db: var DbConn): tuple[res: int, ss, ne, msg: string] {.
511.TSqlSmallInt, retSz.addr)
except:
discard
return (res.int, $(addr sqlState), $(addr nativeErr), $(addr errMsg))
return (res.int, $(cast[cstring](addr sqlState)), $cast[cstring](addr nativeErr), $cast[cstring](addr errMsg))

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

proc dbQuote*(s: string): string {.noSideEffect.} =
## DB quotes the string.
Expand Down Expand Up @@ -291,7 +291,7 @@ iterator fastRows*(db: var DbConn, query: SqlQuery,
buf[0] = '\0'
db.sqlCheck(SQLGetData(db.stmt, colId.SqlUSmallInt, SQL_C_CHAR,
cast[cstring](buf.addr), 4095, sz.addr))
rowRes[colId-1] = $(addr buf)
rowRes[colId-1] = $cast[cstring]((addr buf))
yield rowRes
res = SQLFetch(db.stmt)
properFreeResult(SQL_HANDLE_STMT, db.stmt)
Expand Down Expand Up @@ -319,7 +319,7 @@ iterator instantRows*(db: var DbConn, query: SqlQuery,
buf[0] = '\0'
db.sqlCheck(SQLGetData(db.stmt, colId.SqlUSmallInt, SQL_C_CHAR,
cast[cstring](buf.addr), 4095, sz.addr))
rowRes[colId-1] = $(addr buf)
rowRes[colId-1] = $cast[cstring](addr buf)
yield (row: rowRes, len: cCnt.int)
res = SQLFetch(db.stmt)
properFreeResult(SQL_HANDLE_STMT, db.stmt)
Expand Down Expand Up @@ -358,7 +358,7 @@ proc getRow*(db: var DbConn, query: SqlQuery,
buf[0] = '\0'
db.sqlCheck(SQLGetData(db.stmt, colId.SqlUSmallInt, SQL_C_CHAR,
cast[cstring](buf.addr), 4095, sz.addr))
rowRes[colId-1] = $(addr buf)
rowRes[colId-1] = $cast[cstring](addr buf)
res = SQLFetch(db.stmt)
result = rowRes
properFreeResult(SQL_HANDLE_STMT, db.stmt)
Expand Down Expand Up @@ -386,7 +386,7 @@ proc getAllRows*(db: var DbConn, query: SqlQuery,
buf[0] = '\0'
db.sqlCheck(SQLGetData(db.stmt, colId.SqlUSmallInt, SQL_C_CHAR,
cast[cstring](buf.addr), 4095, sz.addr))
rowRes[colId-1] = $(addr buf)
rowRes[colId-1] = $cast[cstring](addr buf)
rows.add(rowRes)
res = SQLFetch(db.stmt)
result = rows
Expand Down
2 changes: 1 addition & 1 deletion lib/posix/posix_utils.nim
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ type Uname* = object
sysname*, nodename*, release*, version*, machine*: string

template charArrayToString(input: typed): string =
$cstring(addr input)
$cast[cstring](addr input)

proc uname*(): Uname =
## Provides system information in a `Uname` struct with sysname, nodename,
Expand Down
6 changes: 3 additions & 3 deletions lib/pure/asyncnet.nim
Original file line number Diff line number Diff line change
Expand Up @@ -229,7 +229,7 @@ when defineSsl:
let len = bioCtrlPending(socket.bioOut)
if len > 0:
var data = newString(len)
let read = bioRead(socket.bioOut, addr data[0], len)
let read = bioRead(socket.bioOut, cast[cstring](addr data[0]), len)
assert read != 0
if read < 0:
raiseSSLError()
Expand All @@ -247,7 +247,7 @@ when defineSsl:
var data = await recv(socket.fd.AsyncFD, BufferSize, flags)
let length = len(data)
if length > 0:
let ret = bioWrite(socket.bioIn, addr data[0], length.cint)
let ret = bioWrite(socket.bioIn, cast[cstring](addr data[0]), length.cint)
if ret < 0:
raiseSSLError()
elif length == 0:
Expand Down Expand Up @@ -459,7 +459,7 @@ proc send*(socket: AsyncSocket, data: string,
when defineSsl:
var copy = data
sslLoop(socket, flags,
sslWrite(socket.sslHandle, addr copy[0], copy.len.cint))
sslWrite(socket.sslHandle, cast[cstring](addr copy[0]), copy.len.cint))
await sendPendingSslData(socket, flags)
else:
await send(socket.fd.AsyncFD, data, flags)
Expand Down
16 changes: 8 additions & 8 deletions lib/pure/nativesockets.nim
Original file line number Diff line number Diff line change
Expand Up @@ -481,13 +481,13 @@ when not useNimNetLite:
result = newString(addrLen)
let addr6 = addr cast[ptr Sockaddr_in6](sockAddr).sin6_addr
when not useWinVersion:
if posix.inet_ntop(posix.AF_INET6, addr6, addr result[0],
if posix.inet_ntop(posix.AF_INET6, addr6, cast[cstring](addr result[0]),
result.len.int32) == nil:
raiseOSError(osLastError())
if posix.IN6_IS_ADDR_V4MAPPED(addr6) != 0:
result.setSlice("::ffff:".len..<addrLen)
else:
if winlean.inet_ntop(winlean.AF_INET6, addr6, addr result[0],
if winlean.inet_ntop(winlean.AF_INET6, addr6, cast[cstring](addr result[0]),
result.len.int32) == nil:
raiseOSError(osLastError())
setLen(result, len(cstring(result)))
Expand All @@ -509,23 +509,23 @@ when not useNimNetLite:
if sockAddr.sa_family.cint == nativeAfInet:
let addr4 = addr cast[ptr Sockaddr_in](sockAddr).sin_addr
when not useWinVersion:
if posix.inet_ntop(posix.AF_INET, addr4, addr strAddress[0],
if posix.inet_ntop(posix.AF_INET, addr4, cast[cstring](addr strAddress[0]),
strAddress.len.int32) == nil:
raiseOSError(osLastError())
else:
if winlean.inet_ntop(winlean.AF_INET, addr4, addr strAddress[0],
if winlean.inet_ntop(winlean.AF_INET, addr4, cast[cstring](addr strAddress[0]),
strAddress.len.int32) == nil:
raiseOSError(osLastError())
elif sockAddr.sa_family.cint == nativeAfInet6:
let addr6 = addr cast[ptr Sockaddr_in6](sockAddr).sin6_addr
when not useWinVersion:
if posix.inet_ntop(posix.AF_INET6, addr6, addr strAddress[0],
if posix.inet_ntop(posix.AF_INET6, addr6, cast[cstring](addr strAddress[0]),
strAddress.len.int32) == nil:
raiseOSError(osLastError())
if posix.IN6_IS_ADDR_V4MAPPED(addr6) != 0:
strAddress.setSlice("::ffff:".len..<length)
else:
if winlean.inet_ntop(winlean.AF_INET6, addr6, addr strAddress[0],
if winlean.inet_ntop(winlean.AF_INET6, addr6, cast[cstring](addr strAddress[0]),
strAddress.len.int32) == nil:
raiseOSError(osLastError())
else:
Expand Down Expand Up @@ -584,7 +584,7 @@ when not useNimNetLite:
# Cannot use INET6_ADDRSTRLEN here, because it's a C define.
result[0] = newString(64)
if inet_ntop(name.sin6_family.cint,
addr name.sin6_addr, addr result[0][0], (result[0].len+1).int32).isNil:
addr name.sin6_addr, cast[cstring](addr result[0][0]), (result[0].len+1).int32).isNil:
raiseOSError(osLastError())
setLen(result[0], result[0].cstring.len)
result[1] = Port(nativesockets.ntohs(name.sin6_port))
Expand Down Expand Up @@ -621,7 +621,7 @@ when not useNimNetLite:
# Cannot use INET6_ADDRSTRLEN here, because it's a C define.
result[0] = newString(64)
if inet_ntop(name.sin6_family.cint,
addr name.sin6_addr, addr result[0][0], (result[0].len+1).int32).isNil:
addr name.sin6_addr, cast[cstring](addr result[0][0]), (result[0].len+1).int32).isNil:
raiseOSError(osLastError())
setLen(result[0], result[0].cstring.len)
result[1] = Port(nativesockets.ntohs(name.sin6_port))
Expand Down
4 changes: 2 additions & 2 deletions lib/pure/strutils.nim
Original file line number Diff line number Diff line change
Expand Up @@ -2435,11 +2435,11 @@ func formatBiggestFloat*(f: BiggestFloat, format: FloatFormatMode = ffDefault,
frmtstr[3] = '*'
frmtstr[4] = floatFormatToChar[format]
frmtstr[5] = '\0'
L = c_sprintf(addr buf, addr frmtstr, precision, f)
L = c_sprintf(cast[cstring](addr buf), cast[cstring](addr frmtstr), precision, f)
else:
frmtstr[1] = floatFormatToChar[format]
frmtstr[2] = '\0'
L = c_sprintf(addr buf, addr frmtstr, f)
L = c_sprintf(cast[cstring](addr buf), cast[cstring](addr frmtstr), f)
result = newString(L)
for i in 0 ..< L:
# Depending on the locale either dot or comma is produced,
Expand Down
6 changes: 3 additions & 3 deletions lib/std/formatfloat.nim
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ proc writeFloatToBufferSprintf*(buf: var array[65, char]; value: BiggestFloat):
##
## returns the amount of bytes written to `buf` not counting the
## terminating '\0' character.
var n: int = c_sprintf(addr buf, "%.16g", value)
var n: int = c_sprintf(cast[cstring](addr buf), "%.16g", value)
var hasDot = false
for i in 0..n-1:
if buf[i] == ',':
Expand Down Expand Up @@ -90,15 +90,15 @@ proc addFloatRoundtrip*(result: var string; x: float | float32) =
else:
var buffer {.noinit.}: array[65, char]
let n = writeFloatToBufferRoundtrip(buffer, x)
result.addCstringN(cstring(buffer[0].addr), n)
result.addCstringN(cast[cstring](buffer[0].addr), n)

proc addFloatSprintf*(result: var string; x: float) =
when nimvm:
doAssert false
else:
var buffer {.noinit.}: array[65, char]
let n = writeFloatToBufferSprintf(buffer, x)
result.addCstringN(cstring(buffer[0].addr), n)
result.addCstringN(cast[cstring](buffer[0].addr), n)

proc nimFloatToString(a: float): cstring =
## ensures the result doesn't print like an integer, i.e. return 2.0, not 2
Expand Down
2 changes: 1 addition & 1 deletion lib/std/private/oscommon.nim
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ when defined(windows) and not weirdTarget:
template findNextFile*(a, b: untyped): untyped = findNextFileA(a, b)
template getCommandLine*(): untyped = getCommandLineA()

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

proc skipFindData*(f: WIN32_FIND_DATA): bool {.inline.} =
# Note - takes advantage of null delimiter in the cstring
Expand Down
2 changes: 1 addition & 1 deletion lib/std/private/osdirs.nim
Original file line number Diff line number Diff line change
Expand Up @@ -231,7 +231,7 @@ iterator walkDir*(dir: string; relative = false, checkDir = false,
while true:
var x = readdir(d)
if x == nil: break
var y = $cstring(addr x.d_name)
var y = $cast[cstring](addr x.d_name)
if y != "." and y != "..":
var s: Stat
let path = dir / y
Expand Down
2 changes: 1 addition & 1 deletion lib/std/private/strimpl.nim
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ func find*(s, sub: cstring, start: Natural = 0, last = 0): int =
if sub.len > s.len - start: return -1
if sub.len == 1: return find(s, sub[0], start, last)
if last == 0 and s.len > start:
let found = c_strstr(s[start].unsafeAddr, sub)
let found = c_strstr(cast[cstring](s[start].unsafeAddr), sub)
if not found.isNil:
result = cast[ByteAddress](found) -% cast[ByteAddress](s)
else:
Expand Down
4 changes: 2 additions & 2 deletions lib/std/private/win_setenv.nim
Original file line number Diff line number Diff line change
Expand Up @@ -94,9 +94,9 @@ else:
var buf = newSeq[char](requiredSize + 1)
let buf2 = buf[0].addr
if wcstombs(buf2, wideName, csize_t(requiredSize + 1)) != high(csize_t):
var ptrToEnv = c_getenv(buf2)
var ptrToEnv = c_getenv(cast[cstring](buf2))
ptrToEnv[0] = '\0'
ptrToEnv = c_getenv(buf2)
ptrToEnv = c_getenv(cast[cstring](buf2))
ptrToEnv[1] = '='

# And now, we have to update the outer environment to have a proper empty value.
Expand Down
2 changes: 1 addition & 1 deletion lib/std/syncio.nim
Original file line number Diff line number Diff line change
Expand Up @@ -467,7 +467,7 @@ proc readLine*(f: File, line: var string): bool {.tags: [ReadIOEffect],
while true:
# fixes #9634; this pattern may need to be abstracted as a template if reused;
# likely other io procs need this for correctness.
fgetsSuccess = c_fgets(addr line[pos], sp.cint, f) != nil
fgetsSuccess = c_fgets(cast[cstring](addr line[pos]), sp.cint, f) != nil
if fgetsSuccess: break
when not defined(nimscript):
if errno == EINTR:
Expand Down
2 changes: 1 addition & 1 deletion lib/system.nim
Original file line number Diff line number Diff line change
Expand Up @@ -1844,7 +1844,7 @@ proc debugEcho*(x: varargs[typed, `$`]) {.magic: "Echo", noSideEffect,
when hostOS == "standalone" and defined(nogc):
proc nimToCStringConv(s: NimString): cstring {.compilerproc, inline.} =
if s == nil or s.len == 0: result = cstring""
else: result = cstring(addr s.data)
else: result = cast[cstring](addr s.data)

proc getTypeInfo*[T](x: T): pointer {.magic: "GetTypeInfo", benign.}
## Get type information for `x`.
Expand Down
2 changes: 1 addition & 1 deletion lib/system/dyncalls.nim
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ elif defined(windows) or defined(dos):
dec(m)
k = k div 10
if k == 0: break
result = getProcAddress(cast[THINSTANCE](lib), addr decorated)
result = getProcAddress(cast[THINSTANCE](lib), cast[cstring](addr decorated))
if result != nil: return
procAddrError(name)

Expand Down
4 changes: 2 additions & 2 deletions lib/system/excpt.nim
Original file line number Diff line number Diff line change
Expand Up @@ -397,9 +397,9 @@ proc reportUnhandledErrorAux(e: ref Exception) {.nodestroy, gcsafe.} =
xadd(buf, e.name, e.name.len)
add(buf, "]\n")
if onUnhandledException != nil:
onUnhandledException($buf.addr)
onUnhandledException($cast[cstring](buf.addr))
else:
showErrorMessage(buf.addr, L)
showErrorMessage(cast[cstring](buf.addr), L)

proc reportUnhandledError(e: ref Exception) {.nodestroy, gcsafe.} =
if unhandledExceptionHook != nil:
Expand Down
2 changes: 1 addition & 1 deletion lib/system/repr.nim
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ proc reprFloat(x: float): string {.compilerproc.} = return $x

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

proc reprStrAux(result: var string, s: cstring; len: int) =
Expand Down
2 changes: 1 addition & 1 deletion lib/system/strmantle.nim
Original file line number Diff line number Diff line change
Expand Up @@ -232,7 +232,7 @@ proc nimParseBiggestFloat(s: openArray[char], number: var BiggestFloat,
t[ti-2] = ('0'.ord + absExponent mod 10).char
absExponent = absExponent div 10
t[ti-3] = ('0'.ord + absExponent mod 10).char
number = c_strtod(addr t, nil)
number = c_strtod(cast[cstring](addr t), nil)

when defined(nimHasInvariant):
{.pop.} # staticBoundChecks
Expand Down
2 changes: 1 addition & 1 deletion lib/system/strs_v2.nim
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ proc cstrToNimstr(str: cstring): NimStringV2 {.compilerRtl.} =

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

proc appendString(dest: var NimStringV2; src: NimStringV2) {.compilerproc, inline.} =
if src.len > 0:
Expand Down
2 changes: 1 addition & 1 deletion lib/system/sysstr.nim
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ proc copyStr(s: NimString, start: int): NimString {.compilerproc.} =

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

proc toNimStr(str: cstring, len: int): NimString {.compilerproc.} =
result = rawNewStringNoInit(len)
Expand Down
8 changes: 4 additions & 4 deletions lib/wrappers/openssl.nim
Original file line number Diff line number Diff line change
Expand Up @@ -804,10 +804,10 @@ proc md5_File*(file: string): string {.raises: [IOError,Exception].} =
while (let bytes = f.readChars(buf); bytes > 0):
discard md5_Update(ctx, buf[0].addr, cast[csize_t](bytes))

discard md5_Final(buf[0].addr, ctx)
discard md5_Final(cast[cstring](buf[0].addr), ctx)
f.close

result = hexStr(addr buf)
result = hexStr(cast[cstring](addr buf))

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

discard md5_Final(addr res, ctx)
result = hexStr(addr res)
discard md5_Final(cast[cstring](addr res), ctx)
result = hexStr(cast[cstring](addr res))

when defined(nimHasStyleChecks):
{.pop.}
Expand Down
4 changes: 2 additions & 2 deletions tests/async/tnewasyncudp.nim
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ proc launchSwarm(name: ptr SockAddr) {.async.} =
16384, cast[ptr SockAddr](addr saddr),
addr slen)
size = 0
var grammString = $cstring(addr buffer)
var grammString = $cast[cstring](addr buffer)
if grammString == message:
saveSendingPort(sockport)
inc(recvCount)
Expand All @@ -80,7 +80,7 @@ proc readMessages(server: AsyncFD) {.async.} =
16384, cast[ptr SockAddr](addr(saddr)),
addr(slen))
size = 0
var grammString = $cstring(addr buffer)
var grammString = $cast[cstring](addr buffer)
if grammString.startsWith("Message ") and
saddr.sin_addr.s_addr == nativesockets.ntohl(INADDR_LOOPBACK.uint32):
await sendTo(server, addr grammString[0], len(grammString),
Expand Down
2 changes: 1 addition & 1 deletion tests/float/tfloat4.nim
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ proc c_sprintf(buf, fmt: cstring) {.importc:"sprintf", header: "<stdio.h>", vara

proc floatToStr(f: float64): string =
var buffer: array[128, char]
c_sprintf(addr buffer, "%.16e", f)
c_sprintf(cast[cstring](addr buffer), "%.16e", f)
result = ""
for ch in buffer:
if ch == '\0':
Expand Down
Loading