mirror of
https://github.com/nim-lang/Nim.git
synced 2026-04-19 22:10:33 +00:00
fixes #25205
fixes #14873
```nim
type
SysLockObj {.importc: "pthread_mutex_t", pure, final,
header: """#include <sys/types.h>
#include <pthread.h>""", byref.} = object
when defined(linux) and defined(amd64):
abi: array[40 div sizeof(clong), clong]
```
Before this PR, in refc, `resetLoc` generates field assignments for each
fields of `importc` object. But the field `abi` is not a genuine field,
which doesn't exits in the struct. We could use `zeroMem` to reset the
memory if not leave it alone
(cherry picked from commit 02609f1872)
This commit is contained in:
@@ -9,3 +9,30 @@ import std/assertions
|
||||
|
||||
var m = createMyType[int]()
|
||||
doAssert m.use() == 3
|
||||
|
||||
|
||||
import std/locks
|
||||
|
||||
type
|
||||
S = object
|
||||
r: proc()
|
||||
|
||||
B = object
|
||||
d: Lock
|
||||
w: S
|
||||
|
||||
proc v(x: ptr B) {.exportc.} = reset(x[])
|
||||
|
||||
type
|
||||
Test = object
|
||||
path: string # Removing this makes both cases work.
|
||||
lock: Lock
|
||||
|
||||
# A: This is not fine.
|
||||
var a = Test()
|
||||
|
||||
proc main(): void =
|
||||
# B: This is fine.
|
||||
var b = Test()
|
||||
|
||||
main()
|
||||
|
||||
Reference in New Issue
Block a user