| 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) |