diff options
author | Dmitry Polienko <dmitry@eldis.ru> | 2016-07-19 20:37:26 -0700 |
---|---|---|
committer | Dmitry Polienko <dmitry@eldis.ru> | 2016-07-19 20:37:26 -0700 |
commit | c768fea6308330396e9d62aa9a6608d8fc3f40dc (patch) | |
tree | 24997e4ce6681b66f1f0ec08058782a064dca4ab /lib/system | |
parent | 9bd952d2c2928f2e75eacf7fca4889e0a4b39c38 (diff) | |
download | Nim-c768fea6308330396e9d62aa9a6608d8fc3f40dc.tar.gz |
Fix newWideCString(cstring, int)
Diffstat (limited to 'lib/system')
-rw-r--r-- | lib/system/widestrs.nim | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/lib/system/widestrs.nim b/lib/system/widestrs.nim index 6ad0cfd58..578bebe80 100644 --- a/lib/system/widestrs.nim +++ b/lib/system/widestrs.nim @@ -73,11 +73,11 @@ template fastRuneAt(s: cstring, i: int, result: expr, doInc = true) = result = 0xFFFD when doInc: inc(i) -iterator runes(s: cstring): int = +iterator runes(s: cstring, L: int): int = var i = 0 result: int - while s[i] != '\0': + while i < L: fastRuneAt(s, i, result, true) yield result @@ -85,7 +85,7 @@ proc newWideCString*(source: cstring, L: int): WideCString = unsafeNew(result, L * 4 + 2) #result = cast[wideCString](alloc(L * 4 + 2)) var d = 0 - for ch in runes(source): + for ch in runes(source, L): if ch <=% UNI_MAX_BMP: if ch >=% UNI_SUR_HIGH_START and ch <=% UNI_SUR_LOW_END: result[d] = UNI_REPLACEMENT_CHAR |