diff --git a/drchaos/common.nim b/drchaos/common.nim index 50dd737..d0e34f4 100644 --- a/drchaos/common.nim +++ b/drchaos/common.nim @@ -221,7 +221,7 @@ proc fromData*[K, V](data: openArray[byte]; pos: var int; output: var (Table[K, proc fromData*[T](data: openArray[byte]; pos: var int; output: var ref T) proc fromData*[T](data: openArray[byte]; pos: var int; output: var Option[T]) proc fromData*[T: tuple](data: openArray[byte]; pos: var int; output: var T) -proc fromData*[T: object](data: openArray[byte]; pos: var int; output: var T) {.nodestroy.} +proc fromData*[T: object](data: openArray[byte]; pos: var int; output: var T) proc fromData*[T: distinct](data: openArray[byte]; pos: var int; output: var T) {.inline.} proc toData*(data: var openArray[byte]; pos: var int; input: string) diff --git a/drchaos/mutator.nim b/drchaos/mutator.nim index 66b3862..b4dce96 100644 --- a/drchaos/mutator.nim +++ b/drchaos/mutator.nim @@ -585,7 +585,7 @@ template mutatorImpl*(target, mutator, typ: untyped) = discard else: var pos = 1 - reset(cached) + #reset(cached) fromData(data, pos, cached) proc setInput(data: openArray[byte]; len: int) {.inline.} = @@ -596,6 +596,7 @@ template mutatorImpl*(target, mutator, typ: untyped) = copyMem(unsafeAddr data, addr buffer[0], len) proc clearBuffer() {.inline.} = + reset(cached) setLen(buffer, 1) proc testOneInputImpl(data: openArray[byte]) = diff --git a/tests/tcustom.nim b/tests/tcustom.nim index 92eac34..647d8bf 100644 --- a/tests/tcustom.nim +++ b/tests/tcustom.nim @@ -48,7 +48,8 @@ proc byteSize[M, N: static[int]](x: Matrix32[M, N]): int {.inline.} = result = M * N * sizeof(float32) proc fromData[M, N: static[int]](data: openArray[byte]; pos: var int; output: var Matrix32[M, N]) = - output.data = createData(M * N) + if output.data == nil: + output.data = createData(M * N) let bLen = output.byteSize if readData(data, pos, output.data, bLen) != bLen: raiseDecoding()