parent
7118e1ca01
commit
9ac0cbdd51
1 changed files with 9 additions and 11 deletions
|
|
@ -60,23 +60,21 @@ proc `$`*(oid: Oid): string =
|
||||||
result = newString(24)
|
result = newString(24)
|
||||||
oidToString(oid, result)
|
oidToString(oid, result)
|
||||||
|
|
||||||
|
proc rand(): cint {.importc: "rand", header: "<stdlib.h>", nodecl.}
|
||||||
|
proc srand(seed: cint) {.importc: "srand", header: "<stdlib.h>", nodecl.}
|
||||||
|
|
||||||
|
var t = getTime().toUnix.int32
|
||||||
|
srand(t)
|
||||||
|
|
||||||
var
|
var
|
||||||
incr: int
|
incr: int = rand()
|
||||||
fuzz: int32
|
fuzz: int32 = rand()
|
||||||
|
|
||||||
proc genOid*(): Oid =
|
proc genOid*(): Oid =
|
||||||
## generates a new OID.
|
## generates a new OID.
|
||||||
proc rand(): cint {.importc: "rand", header: "<stdlib.h>", nodecl.}
|
t = getTime().toUnix.int32
|
||||||
proc srand(seed: cint) {.importc: "srand", header: "<stdlib.h>", nodecl.}
|
|
||||||
|
|
||||||
var t = getTime().toUnix.int32
|
|
||||||
|
|
||||||
var i = int32(atomicInc(incr))
|
var i = int32(atomicInc(incr))
|
||||||
|
|
||||||
if fuzz == 0:
|
|
||||||
# racy, but fine semantically:
|
|
||||||
srand(t)
|
|
||||||
fuzz = rand()
|
|
||||||
bigEndian32(addr result.time, addr(t))
|
bigEndian32(addr result.time, addr(t))
|
||||||
result.fuzz = fuzz
|
result.fuzz = fuzz
|
||||||
bigEndian32(addr result.count, addr(i))
|
bigEndian32(addr result.count, addr(i))
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue