123456789101112131415161718192021222324252627282930313233343536373839404142 |
- discard """
- ccodeCheck: "@'genericDeepCopy(' .*"
- action: compile
- """
- # bug #2286
- import threadPool
- type
- Person = ref object
- name: string
- friend: Person
- var
- people: seq[Person] = @[]
- proc newPerson(name:string): Person =
- result.new()
- result.name = name
- proc greet(p:Person) =
- p.friend.name &= "-MUT" # this line crashes the program
- echo "Person {",
- " name:", p.name, "(", cast[int](addr p.name),"),",
- " friend:", p.friend.name, "(", cast[int](addr p.friend.name),") }"
- proc setup =
- for i in 0 ..< 20:
- people.add newPerson("Person" & $(i + 1))
- for i in 0 ..< 20:
- people[i].friend = people[19-i]
- proc update =
- parallel:
- for i in 0 .. people.high:
- spawn people[i].greet()
- when true:
- setup()
- update()
|