diff options
author | Araq <rumpf_a@web.de> | 2012-01-02 23:53:07 +0100 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2012-01-02 23:53:07 +0100 |
commit | b5aafb4cf34eeeb89d3dffa1184b11f11bd16a27 (patch) | |
tree | f7b84c5079a07dfd100cf743f1f0aa28be617364 | |
parent | d849463af22f02d4a5e4fa7edd5e756aa6cc39fe (diff) | |
download | Nim-b5aafb4cf34eeeb89d3dffa1184b11f11bd16a27.tar.gz |
bugfix: +1 unnecessary in resizeString; caused annoying reallocations for strings created with 'newStringOfCap'
-rwxr-xr-x | lib/system/alloc.nim | 2 | ||||
-rwxr-xr-x | lib/system/sysstr.nim | 8 | ||||
-rwxr-xr-x | todo.txt | 1 |
3 files changed, 5 insertions, 6 deletions
diff --git a/lib/system/alloc.nim b/lib/system/alloc.nim index 8522e6877..8bf173fc1 100755 --- a/lib/system/alloc.nim +++ b/lib/system/alloc.nim @@ -1,7 +1,7 @@ # # # Nimrod's Runtime Library -# (c) Copyright 2011 Andreas Rumpf +# (c) Copyright 2012 Andreas Rumpf # # See the file "copying.txt", included in this # distribution, for details about the copyright. diff --git a/lib/system/sysstr.nim b/lib/system/sysstr.nim index 43ad02575..4fcc7cd3e 100755 --- a/lib/system/sysstr.nim +++ b/lib/system/sysstr.nim @@ -50,7 +50,7 @@ proc copyStrLast(s: NimString, start, last: int): NimString {.compilerProc.} = result = rawNewString(len) result.len = len c_memcpy(result.data, addr(s.data[start]), len * sizeof(Char)) - result.data[len] = '\0' + #result.data[len] = '\0' else: result = rawNewString(len) @@ -61,7 +61,7 @@ proc toNimStr(str: CString, len: int): NimString {.compilerProc.} = result = rawNewString(len) result.len = len c_memcpy(result.data, str, (len+1) * sizeof(Char)) - result.data[len] = '\0' # readline relies on this! + #result.data[len] = '\0' # readline relies on this! proc cstrToNimstr(str: CString): NimString {.compilerProc.} = result = toNimstr(str, c_strlen(str)) @@ -146,10 +146,10 @@ proc addChar(s: NimString, c: char): NimString = # s = rawNewString(0); proc resizeString(dest: NimString, addlen: int): NimString {.compilerproc.} = - if dest.len + addLen + 1 <= dest.space: + if dest.len + addLen <= dest.space: result = dest else: # slow path: - var sp = max(resize(dest.space), dest.len + addLen + 1) + var sp = max(resize(dest.space), dest.len + addLen) result = cast[NimString](growObj(dest, sizeof(TGenericSeq) + (sp+1) * sizeof(Char))) result.space = sp diff --git a/todo.txt b/todo.txt index 27d192dcd..4e10bdc62 100755 --- a/todo.txt +++ b/todo.txt @@ -1,7 +1,6 @@ version 0.8.14 ============== -- check resizeString and fix +1 bug - BUG: type TX = TTable[string, int] - BUG: len(openArray) breaks symbol files - BUG: temp3.nim triggers weird compiler bug |