From a44af202ed10d7c8d7158311e9414216fb04d967 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m=20=28Grubba=29?= <grubba@grubba.org> Date: Sat, 12 Oct 2013 15:00:51 +0200 Subject: [PATCH] decode_value(): Kludge: Keep function wrapper for programs needing parent. Fixes issue with getting "Parent lost, cannot clone program." from SSL.handshake()->*derive*_master_secret() in dumped Pikes. --- src/encode.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/encode.c b/src/encode.c index e713561d99..b2e96f5c65 100644 --- a/src/encode.c +++ b/src/encode.c @@ -3225,6 +3225,13 @@ static void decode_value2(struct decode_data *data) break; } + if ((p->flags & PROGRAM_NEEDS_PARENT)) { + EDB(2, fprintf(stderr, "%*sKeeping %s to keep parent pointer.\n", + data->depth, "", + get_name_of_type(TYPEOF(Pike_sp[-1])))); + break; + } + add_ref(p); pop_stack(); push_program(p); -- GitLab