summary refs log tree commit diff stats
path: root/lib/std/private
diff options
context:
space:
mode:
authorringabout <43030857+ringabout@users.noreply.github.com>2022-11-16 17:22:51 +0800
committerGitHub <noreply@github.com>2022-11-16 10:22:51 +0100
commit06cd15663d6aed6cbf03a265f546043c47f250d4 (patch)
tree644bcc378c2a044655df58a91058b7c73e478d06 /lib/std/private
parent3d692d08f74e41588fa157b006e882f142bd77d4 (diff)
downloadNim-06cd15663d6aed6cbf03a265f546043c47f250d4.tar.gz
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 <43030857+xflywind@users.noreply.github.com>
Diffstat (limited to 'lib/std/private')
-rw-r--r--lib/std/private/oscommon.nim2
-rw-r--r--lib/std/private/osdirs.nim2
-rw-r--r--lib/std/private/strimpl.nim2
-rw-r--r--lib/std/private/win_setenv.nim4
4 files changed, 5 insertions, 5 deletions
diff --git a/lib/std/private/oscommon.nim b/lib/std/private/oscommon.nim
index 66725395f..bab4856ca 100644
--- a/lib/std/private/oscommon.nim
+++ b/lib/std/private/oscommon.nim
@@ -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
diff --git a/lib/std/private/osdirs.nim b/lib/std/private/osdirs.nim
index 4b349817c..add9ed424 100644
--- a/lib/std/private/osdirs.nim
+++ b/lib/std/private/osdirs.nim
@@ -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
diff --git a/lib/std/private/strimpl.nim b/lib/std/private/strimpl.nim
index 7d19825f4..6a38cbfd2 100644
--- a/lib/std/private/strimpl.nim
+++ b/lib/std/private/strimpl.nim
@@ -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:
diff --git a/lib/std/private/win_setenv.nim b/lib/std/private/win_setenv.nim
index 9315f3e7e..303889a40 100644
--- a/lib/std/private/win_setenv.nim
+++ b/lib/std/private/win_setenv.nim
@@ -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.