mirror of
https://github.com/nim-lang/Nim.git
synced 2026-01-04 20:17:42 +00:00
Fix printing and comparing uninitialized strings
This commit is contained in:
@@ -228,6 +228,7 @@ proc cstrToNimstr(c: cstring): string {.asmNoStackFrame, compilerproc.} =
|
||||
|
||||
proc toJSStr(s: string): cstring {.asmNoStackFrame, compilerproc.} =
|
||||
asm """
|
||||
if (`s` === null) return "";
|
||||
var len = `s`.length;
|
||||
var asciiPart = new Array(len);
|
||||
var fcc = String.fromCharCode;
|
||||
@@ -330,6 +331,8 @@ proc cmp(x, y: string): int =
|
||||
proc eqStrings(a, b: string): bool {.asmNoStackFrame, compilerProc.} =
|
||||
asm """
|
||||
if (`a` == `b`) return true;
|
||||
if (`a` === null && `b`.length == 0) return true;
|
||||
if (`b` === null && `a`.length == 0) return true;
|
||||
if ((!`a`) || (!`b`)) return false;
|
||||
var alen = `a`.length;
|
||||
if (alen != `b`.length) return false;
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
var x = "foo".cstring
|
||||
var y: string
|
||||
add(y, x)
|
||||
doAssert y == "foo"
|
||||
17
tests/js/tnilstrs.nim
Normal file
17
tests/js/tnilstrs.nim
Normal file
@@ -0,0 +1,17 @@
|
||||
block:
|
||||
var x: string
|
||||
var y = "foo"
|
||||
|
||||
echo x
|
||||
doAssert x == ""
|
||||
doAssert "" == x
|
||||
|
||||
add(x, y)
|
||||
y[0] = 'm'
|
||||
doAssert y == "moo" and x == "foo"
|
||||
|
||||
block:
|
||||
var x = "foo".cstring
|
||||
var y: string
|
||||
add(y, x)
|
||||
doAssert y == "foo"
|
||||
@@ -1,5 +0,0 @@
|
||||
var x: string
|
||||
var y = "foo"
|
||||
add(x, y)
|
||||
y[0] = 'm'
|
||||
doAssert y == "moo" and x == "foo"
|
||||
Reference in New Issue
Block a user