File tree Expand file tree Collapse file tree 2 files changed +15
-13
lines changed
Expand file tree Collapse file tree 2 files changed +15
-13
lines changed Original file line number Diff line number Diff line change @@ -218,18 +218,13 @@ func exponent(a, b interface{}) float64 {
218218 return math .Pow (toFloat64 (a ), toFloat64 (b ))
219219}
220220
221- func makeRange (a , b interface {}, budget int ) ([]int , int ) {
222- min := toInt (a )
223- max := toInt (b )
221+ func makeRange (min , max int ) []int {
224222 size := max - min + 1
225- if size >= budget {
226- panic ("memory budget exceeded" )
227- }
228223 rng := make ([]int , size )
229224 for i := range rng {
230225 rng [i ] = min + i
231226 }
232- return rng , size
227+ return rng
233228}
234229
235230func toInt (a interface {}) int {
Original file line number Diff line number Diff line change @@ -71,10 +71,6 @@ func (vm *VM) Run(program *Program, env interface{}) interface{} {
7171 <- vm .step
7272 }
7373
74- if vm .memory >= vm .limit {
75- panic ("memory budget exceeded" )
76- }
77-
7874 vm .pp = vm .ip
7975 vm .ip ++
8076 op := vm .bytecode [vm .pp ]
@@ -209,8 +205,13 @@ func (vm *VM) Run(program *Program, env interface{}) interface{} {
209205 case OpRange :
210206 b := vm .pop ()
211207 a := vm .pop ()
212- c , size := makeRange (a , b , vm .limit )
213- vm .push (c )
208+ min := toInt (a )
209+ max := toInt (b )
210+ size := max - min + 1
211+ if vm .memory + size >= vm .limit {
212+ panic ("memory budget exceeded" )
213+ }
214+ vm .push (makeRange (min , max ))
214215 vm .memory += size
215216
216217 case OpMatches :
@@ -308,6 +309,9 @@ func (vm *VM) Run(program *Program, env interface{}) interface{} {
308309 }
309310 vm .push (array )
310311 vm .memory += size
312+ if vm .memory >= vm .limit {
313+ panic ("memory budget exceeded" )
314+ }
311315
312316 case OpMap :
313317 size := vm .pop ().(int )
@@ -319,6 +323,9 @@ func (vm *VM) Run(program *Program, env interface{}) interface{} {
319323 }
320324 vm .push (m )
321325 vm .memory += size
326+ if vm .memory >= vm .limit {
327+ panic ("memory budget exceeded" )
328+ }
322329
323330 case OpLen :
324331 vm .push (length (vm .current ()))
You can’t perform that action at this time.
0 commit comments