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 {
218
218
return math .Pow (toFloat64 (a ), toFloat64 (b ))
219
219
}
220
220
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 {
224
222
size := max - min + 1
225
- if size >= budget {
226
- panic ("memory budget exceeded" )
227
- }
228
223
rng := make ([]int , size )
229
224
for i := range rng {
230
225
rng [i ] = min + i
231
226
}
232
- return rng , size
227
+ return rng
233
228
}
234
229
235
230
func 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{} {
71
71
<- vm .step
72
72
}
73
73
74
- if vm .memory >= vm .limit {
75
- panic ("memory budget exceeded" )
76
- }
77
-
78
74
vm .pp = vm .ip
79
75
vm .ip ++
80
76
op := vm .bytecode [vm .pp ]
@@ -209,8 +205,13 @@ func (vm *VM) Run(program *Program, env interface{}) interface{} {
209
205
case OpRange :
210
206
b := vm .pop ()
211
207
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 ))
214
215
vm .memory += size
215
216
216
217
case OpMatches :
@@ -308,6 +309,9 @@ func (vm *VM) Run(program *Program, env interface{}) interface{} {
308
309
}
309
310
vm .push (array )
310
311
vm .memory += size
312
+ if vm .memory >= vm .limit {
313
+ panic ("memory budget exceeded" )
314
+ }
311
315
312
316
case OpMap :
313
317
size := vm .pop ().(int )
@@ -319,6 +323,9 @@ func (vm *VM) Run(program *Program, env interface{}) interface{} {
319
323
}
320
324
vm .push (m )
321
325
vm .memory += size
326
+ if vm .memory >= vm .limit {
327
+ panic ("memory budget exceeded" )
328
+ }
322
329
323
330
case OpLen :
324
331
vm .push (length (vm .current ()))
You can’t perform that action at this time.
0 commit comments