From 21539019dd46ec88a3369b53cc0069b372c6d7d1 Mon Sep 17 00:00:00 2001 From: LemonBoy Date: Tue, 13 Sep 2016 17:11:05 +0200 Subject: [PATCH] Make sure to make a copy of ERRSV content. Otherwise we might end up showing an empty message. Fixes #522. --- src/perl/common/Expando.xs | 4 +++- src/perl/textui/Statusbar.xs | 5 ++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/perl/common/Expando.xs b/src/perl/common/Expando.xs index bb5d185b..26800b05 100644 --- a/src/perl/common/Expando.xs +++ b/src/perl/common/Expando.xs @@ -85,7 +85,9 @@ static char *perl_expando_event(PerlExpando *rec, SERVER_REC *server, script_unregister_expandos(script); /* rec has been freed now */ - signal_emit("script error", 2, script, SvPV_nolen(ERRSV)); + char *error = g_strdup(SvPV_nolen(ERRSV)); + signal_emit("script error", 2, script, error); + g_free(error); } else if (retcount > 0) { ret = g_strdup(POPp); *free_ret = TRUE; diff --git a/src/perl/textui/Statusbar.xs b/src/perl/textui/Statusbar.xs index a449e11d..8b0e5f65 100644 --- a/src/perl/textui/Statusbar.xs +++ b/src/perl/textui/Statusbar.xs @@ -77,7 +77,10 @@ static void perl_statusbar_event(char *function, SBAR_ITEM_REC *item, /* make sure we don't get back here */ script_unregister_statusbars(script); } - signal_emit("script error", 2, script, SvPV_nolen(ERRSV)); + + char *error = g_strdup(SvPV_nolen(ERRSV)); + signal_emit("script error", 2, script, error); + g_free(error); } else { /* min_size and max_size can be changed, move them to SBAR_ITEM_REC */ hv = hvref(item_sv);