From d2b12fea3536f5083dce64bcadfd9c381404e776 Mon Sep 17 00:00:00 2001 From: Nathan Braswell Date: Sat, 4 Jul 2015 12:59:05 -0400 Subject: [PATCH] Fix vector addEnd so that it increments size AFTER the resize and resize() doesn't copy_construct an invalid item, which only SOMETIMES failes --- stdlib/vector.krak | 6 +++--- tests/test_grammer.krak | 3 ++- tests/test_lambda_pointer.krak | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/stdlib/vector.krak b/stdlib/vector.krak index 1fdb9b0..9aa50ca 100644 --- a/stdlib/vector.krak +++ b/stdlib/vector.krak @@ -142,10 +142,10 @@ obj vector (Object) { } fun add(dataIn: T): void { addEnd(dataIn); } fun addEnd(dataIn: T): void { + if (size+1 >= available) + resize((size+1)*2); + maybe_copy_construct(&data[size], &dataIn); size++; - if (size >= available) - resize(size*2); - maybe_copy_construct(&data[size-1], &dataIn); } fun remove(index: int) { diff --git a/tests/test_grammer.krak b/tests/test_grammer.krak index 0805088..4917b62 100644 --- a/tests/test_grammer.krak +++ b/tests/test_grammer.krak @@ -3,7 +3,8 @@ import grammer:* import string:* fun main():int { - var a = load_grammer(string("grammer.kgm")) + var a = load_grammer(string("../krakenGrammer.kgm")) + /*var a = load_grammer(string("grammer.kgm"))*/ println(a.to_string()) return 0 } diff --git a/tests/test_lambda_pointer.krak b/tests/test_lambda_pointer.krak index f2dca98..2ed68e3 100644 --- a/tests/test_lambda_pointer.krak +++ b/tests/test_lambda_pointer.krak @@ -1,6 +1,6 @@ +import io:* fun main():int { var wr: fun():int* return 0 } -