diff options
-rw-r--r-- | regress/104-interposition-discarded.lua | 12 | ||||
-rw-r--r-- | src/openssl.c | 3 |
2 files changed, 15 insertions, 0 deletions
diff --git a/regress/104-interposition-discarded.lua b/regress/104-interposition-discarded.lua new file mode 100644 index 0000000..4261bcb --- /dev/null +++ b/regress/104-interposition-discarded.lua @@ -0,0 +1,12 @@ +#!/usr/bin/env lua + +require"regress".export".*" + +local ssl_context = require "openssl.ssl.context" + +local value = {} +ssl_context.interpose("foo", value) +check(ssl_context.new().foo == value, "interpose failed") + +require "openssl.ssl" -- Pick a module that doesn't get loaded by regress.lua +check(ssl_context.new().foo == value, "loading a module reset methods") diff --git a/src/openssl.c b/src/openssl.c index 5507762..f0d2a38 100644 --- a/src/openssl.c +++ b/src/openssl.c @@ -1191,6 +1191,9 @@ static _Bool auxL_newclass(lua_State *L, const char *name, const auxL_Reg *metho _Bool fresh = auxL_newmetatable(L, name, reset); int n; + if (!reset && !fresh) + return fresh; + auxL_setfuncs(L, metamethods, 0); if ((n = auxL_liblen(methods))) { |