mirror of https://github.com/rusefi/lua.git
73 lines
1.8 KiB
Lua
73 lines
1.8 KiB
Lua
-- $Id: heavy.lua,v 1.4 2016/11/07 13:11:28 roberto Exp $
|
|
-- See Copyright Notice in file all.lua
|
|
|
|
print("creating a string too long")
|
|
do
|
|
local st, msg = pcall(function ()
|
|
local a = "x"
|
|
while true do
|
|
a = a .. a.. a.. a.. a.. a.. a.. a.. a.. a
|
|
.. a .. a.. a.. a.. a.. a.. a.. a.. a.. a
|
|
.. a .. a.. a.. a.. a.. a.. a.. a.. a.. a
|
|
.. a .. a.. a.. a.. a.. a.. a.. a.. a.. a
|
|
.. a .. a.. a.. a.. a.. a.. a.. a.. a.. a
|
|
.. a .. a.. a.. a.. a.. a.. a.. a.. a.. a
|
|
.. a .. a.. a.. a.. a.. a.. a.. a.. a.. a
|
|
.. a .. a.. a.. a.. a.. a.. a.. a.. a.. a
|
|
.. a .. a.. a.. a.. a.. a.. a.. a.. a.. a
|
|
.. a .. a.. a.. a.. a.. a.. a.. a.. a.. a
|
|
print(string.format("string with %d bytes", #a))
|
|
end
|
|
end)
|
|
assert(not st and
|
|
(string.find(msg, "string length overflow") or
|
|
string.find(msg, "not enough memory")))
|
|
end
|
|
print('+')
|
|
|
|
|
|
local function loadrep (x, what)
|
|
local p = 1<<20
|
|
local s = string.rep(x, p)
|
|
local count = 0
|
|
local function f()
|
|
count = count + p
|
|
if count % (0x80*p) == 0 then
|
|
io.stderr:write("(", string.format("0x%x", count), ")")
|
|
end
|
|
return s
|
|
end
|
|
local st, msg = load(f, "=big")
|
|
print(string.format("\ntotal: 0x%x %s", count, what))
|
|
return st, msg
|
|
end
|
|
|
|
|
|
print("loading chunk with too many lines")
|
|
do
|
|
local st, msg = loadrep("\n", "lines")
|
|
assert(not st and string.find(msg, "too many lines"))
|
|
end
|
|
print('+')
|
|
|
|
|
|
print("loading chunk with huge identifier")
|
|
do
|
|
local st, msg = loadrep("a", "chars")
|
|
assert(not st and
|
|
(string.find(msg, "lexical element too long") or
|
|
string.find(msg, "not enough memory")))
|
|
end
|
|
print('+')
|
|
|
|
|
|
print("loading chunk with too many instructions")
|
|
do
|
|
local st, msg = loadrep("a = 10; ", "instructions")
|
|
print(st, msg)
|
|
end
|
|
print('+')
|
|
|
|
|
|
print "OK"
|