From 8fdf344ea9f63d4d733c28067c3732681de65fa5 Mon Sep 17 00:00:00 2001 From: Kartik Agaram Date: Sat, 7 Nov 2020 20:22:19 -0800 Subject: 7214 - undo 7213 Turns out even that doesn't work. There are two distinct use cases here: 1. Keeping columns from infecting each other. 2. Expanding function calls. Perhaps ping-ponging between them is a sign I need tests. --- apps/tile/table.mu | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'apps/tile/table.mu') diff --git a/apps/tile/table.mu b/apps/tile/table.mu index fba6918e..a4a2bae6 100644 --- a/apps/tile/table.mu +++ b/apps/tile/table.mu @@ -65,18 +65,18 @@ fn lookup-binding _self: (addr table), key: (addr array byte), out: (addr handle var data-ah/esi: (addr handle array bind) <- get self, data var _data/eax: (addr array bind) <- lookup *data-ah var data/esi: (addr array bind) <- copy _data - var i/edx: int <- length data + var len/edx: int <- length data + var i/ebx: int <- copy 0 $lookup-binding:loop: { - i <- decrement - compare i, 0 - break-if-< + compare i, len + break-if->= { var offset/edx: (offset bind) <- compute-offset data, i var target-bind/esi: (addr bind) <- index data, offset var target2/edx: (addr handle array byte) <- get target-bind, key var target3/eax: (addr array byte) <- lookup *target2 compare target3, 0 - break-if-= + break-if-= $lookup-binding:loop var is-match?/eax: boolean <- string-equal? target3, key compare is-match?, 0 # false break-if-= @@ -85,6 +85,7 @@ fn lookup-binding _self: (addr table), key: (addr array byte), out: (addr handle copy-object target, out break $lookup-binding:loop } + i <- increment loop } } -- cgit 1.4.1-2-gfad0