fixes #1188
This commit is contained in:
parent
c7e77edecc
commit
bebda3851f
3 changed files with 15 additions and 6 deletions
|
|
@ -65,7 +65,7 @@ proc addLocalVar(g: ModuleGraph; varSection, varInit: PNode; owner: PSym; typ: P
|
|||
vpart.sons[2] = if varInit.isNil: v else: vpart[1]
|
||||
varSection.add vpart
|
||||
if varInit != nil:
|
||||
if useShallowCopy and typeNeedsNoDeepCopy(typ):
|
||||
if useShallowCopy and typeNeedsNoDeepCopy(typ) or optNimV2 in g.config.globalOptions:
|
||||
varInit.add newFastAsgnStmt(newSymNode(result), v)
|
||||
else:
|
||||
let deepCopyCall = newNodeI(nkCall, varInit.info, 3)
|
||||
|
|
|
|||
|
|
@ -251,7 +251,10 @@ proc `^`*[T](fv: FlowVar[ref T]): ref T =
|
|||
## Blocks until the value is available and then returns this value.
|
||||
blockUntil(fv)
|
||||
let src = cast[ref T](fv.data)
|
||||
deepCopy result, src
|
||||
when defined(nimV2):
|
||||
result = src
|
||||
else:
|
||||
deepCopy result, src
|
||||
finished(fv)
|
||||
|
||||
proc `^`*[T](fv: FlowVar[T]): T =
|
||||
|
|
@ -259,7 +262,10 @@ proc `^`*[T](fv: FlowVar[T]): T =
|
|||
blockUntil(fv)
|
||||
when T is string or T is seq:
|
||||
let src = cast[T](fv.data)
|
||||
deepCopy result, src
|
||||
when defined(nimV2):
|
||||
result = src
|
||||
else:
|
||||
deepCopy result, src
|
||||
else:
|
||||
result = fv.blob
|
||||
finished(fv)
|
||||
|
|
|
|||
|
|
@ -136,9 +136,12 @@ else:
|
|||
when TArg is void:
|
||||
thrd.dataFn()
|
||||
else:
|
||||
var x: TArg
|
||||
deepCopy(x, thrd.data)
|
||||
thrd.dataFn(x)
|
||||
when defined(nimV2):
|
||||
thrd.dataFn(thrd.data)
|
||||
else:
|
||||
var x: TArg
|
||||
deepCopy(x, thrd.data)
|
||||
thrd.dataFn(x)
|
||||
finally:
|
||||
afterThreadRuns()
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue