oids sticks to 24 length strings; fixes breaking changes (#20546)

oids sticks 24 length strings
This commit is contained in:
ringabout 2022-10-12 21:15:21 +08:00 • committed by GitHub
commit 13b3ea71da
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 8 deletions

View file

@ -41,9 +41,9 @@ proc hexbyte*(hex: char): int {.inline.} =
proc parseOid*(str: cstring): Oid = proc parseOid*(str: cstring): Oid =
## Parses an OID. ## Parses an OID.
var bytes = cast[cstring](addr(result.time)) var bytes = cast[cstring](cast[pointer](cast[ByteAddress](addr(result.time)) + 4))
var i = 0 var i = 0
while i < 16: while i < 12:
bytes[i] = chr((hexbyte(str[2 * i]) shl 4) or hexbyte(str[2 * i + 1])) bytes[i] = chr((hexbyte(str[2 * i]) shl 4) or hexbyte(str[2 * i + 1]))
inc(i) inc(i)
@ -51,12 +51,12 @@ proc `$`*(oid: Oid): string =
## Converts an OID to a string. ## Converts an OID to a string.
const hex = "0123456789abcdef" const hex = "0123456789abcdef"
result.setLen 32 result.setLen 24
var o = oid var o = oid
var bytes = cast[cstring](addr(o)) var bytes = cast[cstring](cast[pointer](cast[ByteAddress](addr(o)) + 4))
var i = 0 var i = 0
while i < 16: while i < 12:
let b = bytes[i].ord let b = bytes[i].ord
result[2 * i] = hex[(b and 0xF0) shr 4] result[2 * i] = hex[(b and 0xF0) shr 4]
result[2 * i + 1] = hex[b and 0xF] result[2 * i + 1] = hex[b and 0xF]
@ -83,9 +83,9 @@ template genOid(result: var Oid, incr: var int, fuzz: int32) =
proc genOid*(): Oid = proc genOid*(): Oid =
## Generates a new OID. ## Generates a new OID.
runnableExamples: runnableExamples:
doAssert ($genOid()).len == 32 doAssert ($genOid()).len == 24
runnableExamples("-r:off"): runnableExamples("-r:off"):
echo $genOid() # for example, "00000000632c452db08c3d19ee9073e5" echo $genOid() # for example, "5fc7f546ddbbc84800006aaf"
genOid(result, incr, fuzz) genOid(result, incr, fuzz)
proc generatedTime*(oid: Oid): Time = proc generatedTime*(oid: Oid): Time =

View file

@ -7,7 +7,7 @@ import std/assertions
block: # genOid block: # genOid
let x = genOid() let x = genOid()
doAssert ($x).len == 32 doAssert ($x).len == 24
block: block:
let x = genOid() let x = genOid()