From ab51a8e08bcdac6428f6123d8df65790532bf0e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oscar=20Nihlg=C3=A5rd?= Date: Thu, 24 Oct 2019 11:17:01 +0200 Subject: [PATCH] Fix jsgen bug with uninitialized seq (#12500) [backport] (cherry picked from commit 4ac100c9122231ce82f56b51f86ee6e906e0b389) --- compiler/jsgen.nim | 2 +- tests/js/t12223.nim | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 tests/js/t12223.nim diff --git a/compiler/jsgen.nim b/compiler/jsgen.nim index 0384120416..de09c67612 100644 --- a/compiler/jsgen.nim +++ b/compiler/jsgen.nim @@ -1169,7 +1169,7 @@ proc genArrayAddr(p: PProc, n: PNode, r: var TCompRes) = first = firstOrd(p.config, typ.sons[0]) if optBoundsCheck in p.options: useMagic(p, "chckIndx") - r.res = "chckIndx($1, $2, $3.length+$2-1)-$2" % [b.res, rope(first), tmp] + r.res = "chckIndx($1, $2, ($3 != null ? $3.length : 0)+$2-1)-$2" % [b.res, rope(first), tmp] elif first != 0: r.res = "($1)-$2" % [b.res, rope(first)] else: diff --git a/tests/js/t12223.nim b/tests/js/t12223.nim new file mode 100644 index 0000000000..c0e75fb44f --- /dev/null +++ b/tests/js/t12223.nim @@ -0,0 +1,20 @@ +discard """ + action: "run" + output: ''' +caught +index out of bounds, the container is empty +''' +""" + +proc fun() = + var z: seq[string] + discard z[4] + +proc main()= + try: + fun() + except Exception as e: + echo "caught" + echo getCurrentExceptionMsg() + +main() \ No newline at end of file