30 lines
960 B
Lua
30 lines
960 B
Lua
|
|
require("import") -- the import fn
|
||
|
|
import("exception_memory_leak") -- import code
|
||
|
|
eml=exception_memory_leak --alias
|
||
|
|
|
||
|
|
-- catch "undefined" global variables
|
||
|
|
local env = _ENV -- Lua 5.2
|
||
|
|
if not env then env = getfenv () end -- Lua 5.1
|
||
|
|
setmetatable(env, {__index=function (t,i) error("undefined global variable `"..i.."'",2) end})
|
||
|
|
|
||
|
|
a = eml.Foo()
|
||
|
|
assert(eml.Foo_get_count() == 1)
|
||
|
|
b = eml.Foo()
|
||
|
|
assert(eml.Foo_get_count() == 2)
|
||
|
|
|
||
|
|
-- Normal behaviour
|
||
|
|
eml.trigger_internal_swig_exception("no problem", a)
|
||
|
|
assert(eml.Foo_get_count() == 2)
|
||
|
|
assert(eml.Foo_get_freearg_count() == 1)
|
||
|
|
|
||
|
|
-- SWIG exception triggered and handled (return new object case)
|
||
|
|
ok,ex=pcall(eml.trigger_internal_swig_exception, "null", b)
|
||
|
|
assert(ok==false)
|
||
|
|
assert(eml.Foo_get_count() == 2)
|
||
|
|
assert(eml.Foo_get_freearg_count() == 2)
|
||
|
|
|
||
|
|
-- SWIG exception triggered and handled (return by value case).
|
||
|
|
ok,ex=pcall(eml.trigger_internal_swig_exception, "null")
|
||
|
|
assert(ok==false)
|
||
|
|
assert(eml.Foo_get_count() == 2)
|