diff --git a/lib/pure/strtabs.nim b/lib/pure/strtabs.nim index 86f81aa433..0a1cc61676 100644 --- a/lib/pure/strtabs.nim +++ b/lib/pure/strtabs.nim @@ -135,15 +135,18 @@ proc enlarge(t: StringTableRef) = if not isNil(t.data[i].key): rawInsert(t, n, t.data[i].key, t.data[i].val) swap(t.data, n) -proc `[]=`*(t: StringTableRef, key, val: string) {.rtl, extern: "nstPut".} = - ## puts a (key, value)-pair into `t`. +proc addVal(t: StringTableRef, key, val: string) = var index = rawGet(t, key) if index >= 0: t.data[index].val = val else: if mustRehash(len(t.data), t.counter): enlarge(t) rawInsert(t, t.data, key, val) - inc(t.counter) + +proc `[]=`*(t: StringTableRef, key, val: string) {.rtl, extern: "nstPut".} = + ## puts a (key, value)-pair into `t`. + t.addVal(key, val) + inc(t.counter) proc raiseFormatException(s: string) = var e: ref ValueError